Python เป็นแอปพลิเคชั่นประเภทใดเป็นตัวเลือกที่ไม่ดี [ปิด]


21

ฉันเพิ่งเริ่มเรียนรู้ Python และฉันต้องการได้รับบริบทเพิ่มเติมเกี่ยวกับภาษา

ฉันรู้ว่าในหลายกรณี Python เป็นภาษาที่ช้าเมื่อเทียบกับ C หรือ C ++ ดังนั้น Python จึงไม่ใช่ทางเลือกที่ดีที่สุดสำหรับแอปพลิเคชั่นที่จำเป็นต้องเรียกใช้โดยเร็วที่สุด

นอกเหนือจากนี้ดูเหมือนว่า Python เป็นภาษาวัตถุประสงค์ทั่วไปที่ยอดเยี่ยมซึ่งง่ายต่อการอ่านและเขียน ห้องสมุดที่มีให้นั้นมีฟังก์ชั่นจำนวนมาก นอกเหนือจากแอปพลิเคชั่นที่สำคัญด้านประสิทธิภาพแล้วมันเป็นตัวเลือกที่ไม่ดีที่จะใช้ Python (และทำไม)


8
ไม่มีสิ่งนั้นเป็นภาษาที่ใช้โดยทั่วไปที่ยอดเยี่ยม ทุก ๆ ห้าปีหรือมากกว่านั้นใหม่จะเข้ามาแทนที่เก่าซึ่งมีชีวิตอยู่เฉพาะในตลาดเฉพาะ Lisp, Fortran, Pascal, Basic, Ada, Perl ...
mouviciel

3
@mouviciel: ปาสคาลเป็นภาษาเฉพาะหรือไม่ ตกลงชื่อของมันถูกเปลี่ยนเป็น Delphi เพื่อให้ตรงกับ Borland / CodeGear / Embarcadero IDE แต่ Delphi ยังคง (ตาม) Pascal และแม้ว่ามันจะหายไปจากตลาดแชร์ฉันจะไม่เรียกมันว่าภาษาเฉพาะ และไม่ใช่พื้นฐานสำหรับเรื่องนั้น Visual Basic ยังคงเป็นพื้นฐาน ทั้ง Delphi และ Visual Basic มีการใช้งานในหลาย บริษัท ...
Marjan Venema

7
"Python เป็นภาษาที่ช้าซึ่งสัมพันธ์กับ C หรือ C ++" คุณควรสำรองข้อมูลนี้ด้วยเกณฑ์มาตรฐานเฉพาะที่คุณใช้ ในบางกรณี (I / O ผูกโปรแกรมที่เรียกใช้ระบบจำนวนมาก) Python เร็วเท่ากับ C เพราะมันเป็นเพียง wrapper รอบ ๆ C library
S.Lott

@ S.Lott True และ PyPy อาจแข่งขันกับ JVM หรือแม้แต่ C / C ++
yati sagade

ปาสคาลเคยเป็นภาษาสอนที่ฉันเลือกเมื่อฉันอยู่ที่มหาวิทยาลัย จากนั้นไม่กี่สิบปีก็ผ่านไปและตอนนี้มันก็ดูเหมือนจาวาของเธอ ฉันเขียนโค้ดหลายภาษาอย่างมืออาชีพ (ครึ่งโหลหรือมากกว่านั้น) แต่ก็ยังใช้รหัส Delphi เพื่อความสนุกสนาน
Mawg

คำตอบ:


22

ซอฟต์แวร์มุ่งเป้าไปที่เป้าหมายฝังตัวด้วยทรัพยากรที่ จำกัด โปรเซสเซอร์ส่วนใหญ่บนโลกใบนี้ไม่สามารถเรียกใช้ Python ได้เนื่องจากทรัพยากรไม่เพียงพอหรือไม่มีใครได้ย้ายเวอร์ชั่นไปยังสถาปัตยกรรมนั้น โปรเซสเซอร์ส่วนใหญ่แม้ตอนนี้จะมีหน่วยความจำน้อยกว่าเมกะไบต์


…นั่นคือจนกว่าจะมีคนสร้างพอร์ต Python ของ Arduino โอ้เดี๋ยวก่อน!
Spoike

5
@Spike ที่ลิงค์นี้ใช้สำหรับเรียกใช้ไพ ธ อนจริง ๆ บนคอมพิวเตอร์และสื่อสารกับ arduino เท่านั้น Arduino ไม่ได้ใช้งานรหัสหลาม
basarat

1
@BasaratAli: ข้อจำกัดความรับผิดชอบ - ฉันเขียนความคิดเห็นของฉันเป็นเรื่องตลก ;-)
Spoike

14

สถานที่สองแห่งที่ข้ามไปสู่ความคิดเป็นสิ่งที่ต้องใช้พร้อมกันจำนวนมากซึ่งฉันจะใช้ Erlang หรือการคำนวณตัวเลขจำนวนมากซึ่งฉันอาจลองใช้ Fortran


1
Fortran ยังคงล้ำหน้า C / C ++ ในการคำนวณเชิงตัวเลขหรือไม่ ...
Sardathrion - Reinstate Monica

1
คุณรู้ว่าฉันไม่รู้ มันไม่ใช่พื้นที่ที่ฉันมีประสบการณ์มาก แต่ฉันรู้ว่าผู้คนใน Fortran ใช้เวลากว่า 30 ปีในการสร้างเครื่องมือของพวกเขาอย่างรวดเร็ว
Zachary K

@ Sardathrion - ยากที่จะพูด ธรรมชาติเท่านั้นคุณเข้าใจ แต่ไม่กี่เดือนที่ผ่านมานายไลโอเนลแห่งชื่อเสียงของ Intel Fortran กล่าวว่าสายผลิตภัณฑ์ Fortran ของพวกเขานั้นยอดขายผลิตภัณฑ์อื่น ๆ ในสายการพัฒนาของพวกเขา (ซึ่งไม่แคบมาก)
โกง

@Idigas: แน่นอนฉันรู้ว่า Fortran มีการใช้อย่างกว้างขวาง แต่อาจเป็นเพราะรหัสดั้งเดิมและไม่ จำกัด การเพิ่มประสิทธิภาพ บางทีฉันควรถามคำถามนั้น ...
Sardathrion - Reinstate Monica

โปรดจำไว้ว่าผู้คนจำนวนมากที่ทำการคำนวณเชิงตัวเลขรู้ว่า Fortran ดีมากและเป็นเครื่องมือที่พวกเขาเลือก ดังนั้นเมื่อพวกเขาต้องทำงานแบบนั้นพวกเขาจะไปถึง Fortran
Zachary K

8

เนื่องจาก Python เป็นภาษาที่พิมพ์แบบไดนามิกโดยไม่มีการตรวจสอบเวลาคอมไพล์การ refactoring โครงการ Python ขนาดใหญ่ที่ไม่มีการทดสอบหน่วยที่กว้างขวางจะยาก

ดังนั้นหากคุณมีโครงการขนาดใหญ่ที่ต้องดูแลและแก้ไขเป็นเวลานานและทีมของคุณไม่ได้มุ่งมั่นที่จะสร้างการทดสอบอัตโนมัติสำหรับทุกสิ่งคุณอาจทำได้ดีกว่าที่จะใช้ Java หรือ C #


17
การสร้างโครงการขนาดใหญ่ใหม่โดยไม่ต้องทดสอบหน่วยนั้นยากมาก
Sardathrion - Reinstate Monica

9
จริง แต่ก็ยากขึ้นโดยไม่มีความปลอดภัยประเภท
Eric Wilson

3
@Eric Wilson - ถึงอย่างนั้นการพิมพ์ที่แข็งแกร่งก็ให้ความรู้สึกผิด ๆ กับความปลอดภัย ... มันคอมไพล์แล้วส่งมัน!
Mark Booth

2
นี่อาจไม่ใช่ 100% สำหรับหัวข้อของคำถาม แต่ยังคงเป็นประเด็นที่ถูกต้อง การสนับสนุนการสร้างเครื่องมือโดยเฉพาะการปรับโครงสร้างใหม่สำหรับภาษาที่พิมพ์แบบไดนามิกนั้นขาดเมื่อเทียบกับภาษาเช่น Java หรือ C # เพียงแค่เปลี่ยนชื่อสิ่งต่าง ๆ อาจเป็นการออกกำลังกายที่ครบถ้วนสมบูรณ์ในโครงการ Python ขนาดใหญ่
OliverS

Python ต้องการรันไทม์หรือ VM แยกจากกันหรือสามารถสร้างไฟล์ที่มีอยู่ในตัวเดียวได้หรือไม่?
Jim ในเท็กซัส

2

หากจุดสนใจหลักคือการพัฒนา windows GUI ฉันควรแนะนำกับ CPython เนื่องจากมีผู้ออกแบบฟอร์มที่ดี (เทียบกับการใช้. Net)

อย่างไรก็ตาม IronPython ทำงานบน. Net และคุณมี IDE สองตัวที่มีตัวออกแบบฟอร์มให้เลือก: Visual Studio และ SharpDevelop ในความเป็นจริงเครื่องมือ Python สำหรับ Visual Studioสามารถใช้กับ CPython ได้เช่นเดียวกับ IronPython ซึ่งค่อนข้างเรียบร้อย แต่ฉันยังไม่ได้ลอง ...


2

สิ่งนี้ขึ้นอยู่กับสิ่งที่คุณหมายถึงโดย "ตัวเลือกที่ไม่ดี"

หากคุณหมายถึงแอพพลิเคชั่นที่ใช้ Python นั้นยากมากมีอยู่ค่อนข้างน้อย: แอพพลิเคชั่นหลักที่นึกถึงและยังไม่ถูกกล่าวถึงคือโค้ดที่ต้องการความถูกต้องในระดับสูงซึ่งภาษาที่มีระบบประเภทที่ซับซ้อน ) เป็นตัวเลือกที่ดีกว่า

ถ้าคุณหมายถึงแอพพลิเคชั่นที่ Python เหมาะสำหรับย่อย (นั่นคือมีตัวเลือกที่ดีกว่า) ดังนั้นก็มีมากกว่า แต่มันก็เป็นอัตนัยมากกว่า ตัวอย่างเช่นจากประสบการณ์ที่ จำกัด ของฉันการทำงานกับคอมไพเลอร์และล่ามนั้นง่ายกว่ามากเมื่อใช้กับข้อมูลประเภทพีชคณิตการจับคู่รูปแบบและคุณลักษณะการทำงานที่มากกว่า Python อย่างไรก็ตามการแสดงรายการแอปพลิเคชันอย่างละเอียดนี้เป็นไปไม่ได้เนื่องจากแตกต่างกันไปในแต่ละบุคคล


2

เหมาะอย่างยิ่งสำหรับการเขียนสคริปต์บางสิ่งอย่างรวดเร็วเนื่องจากความสามารถในการแสดงออกและไลบรารีการสนับสนุนที่หลากหลาย

การตรวจสอบประเภทแบบไดนามิกและการขาดการประกาศตัวแปรอย่างชัดเจนทำให้เป็นตัวเลือกที่ไม่ดีสำหรับโครงการขนาดใหญ่ที่เกี่ยวข้องกับการนับแสนหรือแม้แต่โค้ดหลายล้านเส้น สิ่งเดียวกันคือภารกิจสำคัญหรือระบบความปลอดภัยที่สำคัญ ยกตัวอย่างเช่นในระบบ avionics มันจะไม่สามารถยอมรับได้อย่างสมบูรณ์สำหรับระบบที่ล้มเหลวเนื่องจากข้อผิดพลาดที่อาจติดอยู่ในเวลารวบรวม


0

ก็เหมือนกับคุณฉันเพิ่งเริ่มต้นด้วย Python แต่สำหรับฉันในบริบทของการเรียนรู้ของเครื่องและวิทยาศาสตร์ข้อมูล

ฉันเพิ่งได้รับความรู้ใหม่ทั้งหมดใน Java 8 และไลบรารีแบบสตรีมใหม่

ฉันชอบความรู้สึกที่ลื่นไหลของไลบรารีสตรีม Java 8 ใหม่และรู้สึกถึงความใกล้ชิดกับฉันอย่างไรเนื่องจาก Apache เป็นประกายไลบรารี เมื่อฉันเข้าไปใน Python ฉันก็คาดหวังมากขึ้นเรื่อย ๆ

ฉันเห็นมากกว่านี้ แต่น้อยกว่ามาก เอกสารไม่ดีแม้ว่าจะมีอยู่มากมาย ไม่มีความลื่นไหลและตามความเป็นจริงแล้วฉันถูกทิ้งให้คาดเดาว่าวิธีการหนึ่งครอบครองวัตถุใหม่หรือทำงานในสิ่งนี้ ไม่มีอะไรใกล้กับแผนที่ / ลด ฯลฯ ฉันรู้สึกประหลาดใจที่ต้องผิดหวัง

จากจุดเริ่มต้นอย่างไรก็ตามฉันไม่ได้มีความคาดหวังที่ดีว่ามันง่ายแค่ไหนที่จะเรียนรู้ภาษา ฉันพบว่าถูกต้อง: ไม่สอดคล้อง, ไม่เข้าใจง่าย, ยากที่จะเรียนรู้ แต่นั่นเป็นเพียงประสบการณ์ของฉันในการเป็นคนดีในทุกสิ่งที่ชวาชอบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.