Для яких типів програм 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, і хоча він втратив спільний ринок, я б точно не назвав це нішевою мовою. І жоден Basic в цьому питанні. Visual Basic все ще є базовим. І Delphi, і Visual Basic використовуються в багатьох компаніях ...
Мар'ян Венема

7
"Python - повільна мова щодо C або C ++". Ви повинні створити резервну копію за допомогою конкретного тесту, який ви використовували. У деяких випадках (програми, пов'язані з входом / виводом, які здійснюють багато системних викликів) Python настільки ж швидкий, як і C, оскільки це просто обгортка навколо бібліотеки С.
S.Lott

@ S.Lott True, і PyPy іноді може конкурувати з JVM або навіть C / C ++
yati sagade

Паскаль був мовою вибору вибору, коли я навчався в університеті. Тоді кілька десятків років пролетіли повз і тепер їй здається Ява. Я кодую кілька мов професійно (півдесятка або близько того), але все одно кодую Delphi для розваги.
Mawg

Відповіді:


22

Програмне забезпечення, спрямоване на вбудовані цілі з обмеженими ресурсами. Більшість процесорів на цій планеті або не можуть запустити Python через недостатню кількість ресурсів, або ніхто не переніс версію для цієї архітектури. Більшість процесорів, навіть зараз, мають менше мегабайт пам'яті.


… Це поки хтось не зробить Python-порт Ардуїно. Чекай!
Spoike

5
@Spoike це посилання - це фактично запущений python на комп'ютері і лише серійне спілкування з arduino. Arduino не працює з
пітонним

1
@BasaratAli: Відмова - я написав свій коментар в жарті. ;-)
Spoike

14

Два місця, які приходять до тями, - це речі, які вимагають багато одночасності, для чого я б використав Ерланг. Або важкі чисельні обчислення, які я, мабуть, спробував би використовувати Fortran.


1
Чи все-таки Фортран випереджає C / C ++ у чисельних обчисленнях ...
Sardathrion - Відновити Моніку

1
Ви знаєте, я не знаю. Це не область, у якої я багато досвіду. Але я знаю, що люди фортран витратили 30+ років, роблячи свої інструменти дуже швидко.
Захарій К

@Sardathrion - важко сказати. Тільки природно, ти розумієш. Але кілька місяців тому пан Ліонель із слави Intel Fortran заявив, що їх лінія fortran продає кожен інший продукт у лінійці їх розвитку (що не так вже й вузько).
Грак

@Idigas: Дійсно, я знаю, що Fortran широко використовується, але це може бути пов'язано зі застарілим кодом, а не обмеженнями оптимізації. Можливо, я повинен поставити це як питання ...
Сардатріон - Відновіть Моніку

Також пам’ятайте, що багато хто з числових обчислень добре знають Фортран, і це їх інструмент вибору. Тож коли їм належить виконати таке завдання, вони дотягнуться до Фортран.
Захарій К

8

Оскільки Python є динамічно набраною мовою, без перевірки часу компіляції, переробити великий проект Python, який не має широких одиничних тестів, буде складно.

Отже, якщо у вас є великий проект, який потрібно підтримувати і змінювати протягом тривалого часу, і ваша команда не зобов’язана створювати автоматизовані тести для всього, то вам може бути краще використовувати Java або C #.


17
Переробляти будь-який великий проект без одиничних тестів дуже важко.
Сардатріон

9
Правда, але набагато складніше без безпеки типу.
Ерік Вілсон

3
@Eric Wilson - Навіть тоді сильний набір тексту може дати вам помилкове почуття безпеки ... Це компілює, відправляйте його!
Марк Бут

2
Це може бути не 100% на тему питання, але все-таки є дійсним моментом. Підтримка інструментів, особливо рефакторинг для динамічно набраних мов, відсутня порівняно з мовами, такими як Java або C #. Просто перейменування речей може бути вичерпною вправою у великих проектах Python.
ОліверС

Чи потрібен Python окремий час виконання або VM, або він може створити єдиний автономний виконуваний файл?
Джим У Техасі

2

Якщо основна увага приділяється розробці інтерфейсу інтерфейсу Windows, то я б рекомендував проти CPython, оскільки існує брак хороших дизайнерів форм (порівняно з використанням .Net).

Однак, IronPython працює на .Net, і у вас є два IDE з дизайнерами форм на вибір: Visual Studio і SharpDevelop. Насправді інструменти Python для Visual Studio можна використовувати як для CPython, так і IronPython, що досить акуратно, хоча я ще цього не пробував ...


2

Це дійсно залежить від того, що ви маєте на увазі під «поганим вибором».

Якщо ви маєте на увазі програми, де використовувати Python дуже важко, то їх порівняно небагато: головне, що приходить на розум і ще не було згадано, - це код, що вимагає високого рівня коректності, коли мови зі складними системами типів (Haskell, залежно введені мови) ) кращі варіанти.

Якщо ви маєте на увазі програми, де Python є неоптимальним (тобто є кращі варіанти), то їх більше, але вони також більш суб'єктивні. Наприклад, за моїм визнаним обмеженим досвідом працювати над компіляторами та інтерпретаторами набагато простіше з алгебраїчними типами даних, узгодженням шаблонів та більш функціональними можливостями, ніж Python. Однак вичерпний перелік подібних додатків неможливий, оскільки вони залежать від людини.


2

Він ідеально підходить для швидкого створення сценаріїв через його виразні можливості та велику різноманітність бібліотек підтримки.

Динамічна перевірка типу та відсутність явної декларації змінної роблять це поганим вибором для великих проектів, що включають сотні тисяч, а то й мільйони рядків коду. Те саме стосується критично важливих та безпечних систем. Наприклад, в системі авіоніки було б абсолютно неприпустимо виходити з ладу через помилку, яка могла потрапити під час компіляції.


0

Ну, як і ви, я теж тільки починаю з Python. Але для мене в контексті машинного навчання та наукових даних.

Я також тільки що здобув усі нові знання з Java 8 та її нових потокових орієнтованих бібліотек.

Мені дуже сподобалося відчуття нової бібліотеки потоків Java 8, і наскільки це було близько, я маю за рахунок іскрових бібліотек Apache. Коли я зайшов у Python, я очікував того самого та іншого.

Я бачив більше. Але набагато менше. Погана документація, хоча її було багато; відсутність плинності, і, власне, я не мав здогадуватися про те, чи метод керує новим об'єктом, чи працює над цим; нічого близького до карти / зменшення тощо. Я був здивований, коли залишився розчарованим.

Однак з самого початку я не мав великих сподівань на те, як легко було б навчитися мові. Мене визнали правильним: непослідовним, неінтуїтивним, важко вчитися. Але це був лише мій досвід того, що я дуже хороший у всьому Яві.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.