Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters
Register

Reply
 
LinkBack Thread Tools
Old 20.01.2005, 13:14   #1
Профессор
 
Nikita's Avatar
 
Join Date: 01 2005
Location: Perm
Age: 38
Posts: 2,142
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default Сравнение Python с другими языками программирования.

Привет
Тут некоторые сравнения языков программирования. Кончено каждый из них имеет свою нишу ...

Quote:
Python часто сравнивается с другими интерпретируемыми языками, такими как Java, JavaScript, Perl, Tcl, или Smalltalk. Сравнения с C++, Common Lisp и Scheme тоже могут быть просвещающими. В этой секции я кратко проведу сравнение Python с каждым из этих языков. Эти сравнения концентрируются только на языковых проблемах. На практике выбор языка программирования часто диктуется другими реальными сдерживающими факторами, такими как стоимость, доступность, подготовка, предшествующая инвестиция, или даже эмоциональная симпатия. Поскольку эти аспекты чрезвычайно переменчивы, кажется пустой тратой времени много говорить о них в данном сравнении.

Java Обычно ожидается, что Python программы выполняются медленнее чем программы Java, но они при этом требуют намного меньше времени для разработки. Python программы типично в 3-5 раз короче, чем эквивалентные Java программы. Эта разница может быть объяснена за счет встроенных высокоуровневых типов данных Python, и его динамической типизации. Например, Python программист не тратит времени, описывая типы аргументов или переменных, а мощные типы полиморфных списков и словарей Python, для которых богатая синтаксическая поддержка встроена прямо в сам язык, могут найти применение почти в каждой Python программе. Из-за типизирования во время выполнения, Python должен выполнять больше работы, чем Java. Например, при обработке выражения a+b, он должен сперва исследовать объекты a и b, чтобы выяснить их типы, которые не известны во время компиляции. Затем вызывается соответствующая операция сложения, которая может оказаться перегруженным пользователем методом. Java, с другой стороны, может выполнять эффективное сложение целых или чисел с плавающей точкой, но требует описания переменных a и b, и не позволяет перегружать оператор + для экземпляров классов, определенных пользователем.

По этим причинам, Python намного более подходит как "склеивающий" язык, в то время как Java лучше характеризуется как низкоуровневый язык для реализации. Фактически, они вместе могут образовать отличную пару. Компоненты можно реализовывать на Java, а затем использовать в приложениях на Python; Python также полезно использовать для прототипов компонент, пока их разработка не "затвердеет" в Java реализации. Для поддержки такого типа разработки, создается реализация Python, написанная на Java, она позволяет вызывать Python код из Java и наоборот. В этой реализации исходный код Python транслируется в байт-код Java (с помощью библиотеки времени выполнения, для поддержки динамической семантики Python).

Javascript "Объектно-основанная" часть Python приблизительно эквивалентна JavaScript. Подобно JavaScript (и в отличие от Java), Python поддерживает стиль программирования, использующий простые функции и переменные без включения в определение класса. Но для JavaScript это все, что имеется. Python, с другой стороны, поддерживает написание намного более объемных программ, и лучшее повторное использование кода через действительно объектно-ориентированный стиль программирования, в котором классы и наследование играют важную роль.

Perl Python и Perl родом из похожих окружений (скрипты Unix, которые оба значительно переросли) и несут много сходных особенностей, но имеют разную философию. Perl нацелен на поддержку общих программно-ориентированных задач, напр., имеет встроенную обработку регулярных выражений, сканирование файлов и генерирование отчетов. Python концентрируется на общих методологиях программирования, таких как разработка структур данных и объектно-ориентированное программирование, способствует написанию удобочитаемого (а значит легко поддерживаемого) кода, путем предоставления элегантной, но не чрезмерно зашифрованной нотации. Как следствие, Python близко подходит к Perl, но редко побеждает в его оригинальной нише приложений; однако, Python имеет хорошую применимость за пределами ниши Perl.

Python имеет отличающуюся философию касательно среды разработки и распределения кода. Там, где Smalltalk по традиции имеет монолитный "системный образ", который включает как среду, так и программу пользователя, Python хранит стандартные модули и модули пользователя в индивидуальных файлах, которые могут легко быть перестроены или распространены за пределами системы. Как следствие, существует более одного выбора при использовании графического интерфейса пользователя (GUI) в Python программе, поскольку GUI не встроен в систему.

C++ Почти все сказанное для Java, также применимо к C++, просто тем более, что там где код Python обычно в 3-5 раз короче, чем эквивалентный код Java, он часто в 5-10 раз короче эквивалентного кода C++! Анекдотическое подтверждение гласит: то, что один программист Python может завершить за два месяцев, два программиста C++ не смогут сделать и за год. Python блестяще используется как клей, соединяющий компоненты, написанные на C++.
Что скажите ?
Высказывания типа все зависит от задачи не принимаются
У каждого есть свои любимые инструменты для работы ...
Reply With Quote
Old 20.01.2005, 14:36   #2
Guru Apprentice
 
Join Date: 02 2002
Location: /dev/null
Age: 41
Posts: 524
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Quote:
Originally Posted by accemic26
Привет
Тут некоторые сравнения языков программирования. Кончено каждый из них имеет свою нишу ...


Что скажите ?
Высказывания типа все зависит от задачи не принимаются
У каждого есть свои любимые инструменты для работы ...
Высказывание типа
Quote:
perl, perl, a python лучше
противоречит вышеприведенному сравнению перла с питоном

я твердо сижу на перл-е именно потому что я в основном обрабатываю текстовые файлы... правда сейчас уже приходится данные из текстовых файлов или командной строки загонять в LDAP, но я еще не дошел до момента "сотрем начнем сначала" чтобы все переписать на каком-нибудь другом языке. Плюс - под перл есть замечательная библиотека работы с LDAP.

Все никак не сяду учить PHP... А надо бы, а то веб-интерфейс на перле писать кажется коряво.. но может надо /dev/hands подправить?
Reply With Quote
Old 20.01.2005, 16:00   #3
Профессор
 
Nikita's Avatar
 
Join Date: 01 2005
Location: Perm
Age: 38
Posts: 2,142
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

вот ЛДАП у меня в печенках сидит
Reply With Quote
Old 20.01.2005, 16:53   #4
Guru Apprentice
 
Join Date: 02 2002
Location: /dev/null
Age: 41
Posts: 524
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Quote:
Originally Posted by accemic26
вот ЛДАП у меня в печенках сидит
почему?? хотя у меня тоже сначала он туда залез... но сейчас вылез уже
Reply With Quote
Old 20.01.2005, 21:35   #5
ЙЦУКЕН
 
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 47
Posts: 3,118
Downloads: 0
Uploads: 0
Reputation: 5 | 0
Default

Quote:
Originally Posted by Ektich
Высказывание типа противоречит вышеприведенному сравнению перла с питоном

я твердо сижу на перл-е именно потому что я в основном обрабатываю текстовые файлы... правда сейчас уже приходится данные из текстовых файлов или командной строки загонять в LDAP, но я еще не дошел до момента "сотрем начнем сначала" чтобы все переписать на каком-нибудь другом языке. Плюс - под перл есть замечательная библиотека работы с LDAP.

Все никак не сяду учить PHP... А надо бы, а то веб-интерфейс на перле писать кажется коряво.. но может надо /dev/hands подправить?
если хорошо знаешь Perl, то однозначно и дальше править dev/hands

поищи в рунете -- "куроводство наблы" -- почерпнешь многио интереный ией насчет программинг на перле под вeб.

я лично с удовольствием программировал бы на перле , но . мне надо делать проект не в одиночку. а найти хорошего программиста на перле, который не будет писать спагеттикод существенно сложнее, чем на php. (к сожалению я видел портал написаный на перле -- для одного зарубежного заказчика ... и мне до сих пор грустно ... хотя заказчик доволен, сайт работает, но ... кааакой он был корявый
Reply With Quote
Old 20.01.2005, 21:41   #6
ЙЦУКЕН
 
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 47
Posts: 3,118
Downloads: 0
Uploads: 0
Reputation: 5 | 0
Default

ндя, написал ответ, выкинул, написал другой. опять выкинул .

не разводите holywars наффик
Reply With Quote
Old 20.01.2005, 21:41   #7
Профессор
 
Nikita's Avatar
 
Join Date: 01 2005
Location: Perm
Age: 38
Posts: 2,142
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

NM
А как относительно Питона ? Смотрел его ?
Просто я по немногу становлюсь его поклонником. Но если судить по активности этого топика, я один ;(

NM = NightMare = Gaspar ?
Reply With Quote
Old 20.01.2005, 21:55   #8
ЙЦУКЕН
 
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 47
Posts: 3,118
Downloads: 0
Uploads: 0
Reputation: 5 | 0
Default

Quote:
Originally Posted by accemic26
NM
А как относительно Питона ? Смотрел его ?
Просто я по немногу становлюсь его поклонником. Но если судить по активности этого топика, я один ;(

NM = NightMare = Gaspar ?
в плане языков программирования я всеяден, но вот питон -- не понравился. я его в свое время исследовал. на предмет -- concurrent расширений языка и реализации лямбда функций -- нужно был для диплома. не-пон-ра-вил-ся. синтаксис языка с тех пор почти не помянялся.


NM = NightMare = Gaspar ?

да это более чем очевидно в моем профайле сайт на котором есть мое имя/фамилия полностью
Reply With Quote
Old 20.01.2005, 22:01   #9
Профессор
 
Nikita's Avatar
 
Join Date: 01 2005
Location: Perm
Age: 38
Posts: 2,142
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

NM
так я о тебе вроде слышал
ты на сколько мне известо гуру в FreeBSD, и еще вроде вебовский прокси ставил.
если мне не изменяет память ...
Reply With Quote
Old 20.01.2005, 22:04   #10
ЙЦУКЕН
 
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 47
Posts: 3,118
Downloads: 0
Uploads: 0
Reputation: 5 | 0
Default

Quote:
Originally Posted by accemic26
NM
так я о тебе вроде слышал
ты на сколько мне известо гуру в FreeBSD, и еще вроде вебовский прокси ставил.
если мне не изменяет память ...
нууу. к фрибзд я, конечно, не равнодушен. насчет веба -- одним прокси я не ограничился ;)
Reply With Quote
Old 21.01.2005, 10:10   #11
Честный Кот
 
Reckon_'s Avatar
 
Join Date: 04 2004
Location: Yerevan
Age: 41
Posts: 1,844
Downloads: 0
Uploads: 0
Reputation: 165 | 3
Default

В одном из прошлых проектов мы использовали питон как командный язык для нашего продукта. То есть просто интегрировали питон в свой продукт.

Трудности были (в частности старые версии libpython оставляли кучу memory leak-ов и вообще имели тенденцию вылезать в кору - особенно на соляре), но в целом результат был хороший.

В качестве интерфейсного языка для софта - питон очень хорош (по крайней мере в EDA, где до сих пор используют чаще всего TCL). Также для быстрого клепания моделей для проверки каких-то догадок, алгоритмов и т.д. мне питон понравился. Думаю - делать большую систему скриптов на питоне было бы удачным выбором (по крайней мере код будет более читабельным, и новичкам не придется расшифровывать перл-овскую "криптографию").

С Веб-технологиями я не шибко знаком, поэтому не могу сказать, кто там впереди.

А вот насчет парсинга больших объемов текста и управления системами - перл пока что рулит: у питона нет такой интеграции с системой, как у перла. Перл явно гибче. К тому же скорость обработки регулярных выражений и операций с потоками у перла намного выше (кто пытался пропарсить гигабайтный текстовый файл сначала питоном, потом перлом - согласится). Поэтому для "тяжелой артиллерии" я продолжаю использовать перл. И не думаю, что питон - замена перлу (по
крайней мере в этой области).


И я бы не ставил вопрос: перл или питон. Я бы рекомендовал: перл и питон (каждый хорош в какой-то определенной части).

Last edited by Reckon_; 21.01.2005 at 10:23.
Reply With Quote
Old 21.01.2005, 10:29   #12
Честный Кот
 
Reckon_'s Avatar
 
Join Date: 04 2004
Location: Yerevan
Age: 41
Posts: 1,844
Downloads: 0
Uploads: 0
Reputation: 165 | 3
Default

Quote:
Originally Posted by accemic26
NM
Просто я по немногу становлюсь его поклонником. Но если судить по активности этого топика, я один ;(
Языкам программирования надо не поклоняться , а использовать их для решения конкретных задач .
Reply With Quote
Old 21.01.2005, 13:29   #13
Профессор
 
Nikita's Avatar
 
Join Date: 01 2005
Location: Perm
Age: 38
Posts: 2,142
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Reckon:
Я ждал коментариев, подобных первому.
Reply With Quote
Old 24.01.2005, 16:36   #14
Дошкольник
 
Join Date: 08 2004
Location: Oxford
Age: 38
Posts: 141
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Default

Не знаю как насчёт , я на нем не писал, но в целом по моему компактность кода в скриптовых языках сильно переоценивается. На примере Perl могу сказать: код, который в 3-5 раз короче в Perl, чем в Java, требует иногда в 2-3 раза больше времени для прочтения, именно из-за слишком вольного, хаотичного синтаксиса. Мои предпочтения: Java и C.
Reply With Quote
Old 24.01.2005, 17:27   #15
ЙЦУКЕН
 
Join Date: 07 2002
Location: 0x68,0x69,0x72, 0x69,0x6e,0x67, 0x20,0x6e,0x6f, 0x77
Age: 47
Posts: 3,118
Downloads: 0
Uploads: 0
Reputation: 5 | 0
Default

Quote:
Originally Posted by Ablertus
Не знаю как насчёт , я на нем не писал, но в целом по моему компактность кода в скриптовых языках сильно переоценивается. На примере Perl могу сказать: код, который в 3-5 раз короче в Perl, чем в Java, требует иногда в 2-3 раза больше времени для прочтения, именно из-за слишком вольного, хаотичного синтаксиса. Мои предпочтения: Java и C.
на перле можно писать очень неплохо структурируемые и читабельные программы. программист, который так не пишет -- не будет писать хорошо структурируюмые программы ни на чем я не говорю о quickfix режиме, когда срочно нужно сделать програмульку на 10 строчек
Reply With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 23:56.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.