AKB Forums

Go Back   AKB Forums > Technical sections > Languages, Compilers and Interpreters
Home Register Blogs FAQ Members List Calendar Downloads Arcade Mark Forums Read

Languages, Compilers and Interpreters C,C++,C#,.NET,Java,PHP,Perl,SQL and more

Troubles when posting message? Click here! :: Проблемы с отправлением сообщения? Нажмите сюда!

Reply
 
LinkBack Thread Tools Display Modes
Old Jan 20, 2005, 12:14  
Профессор
 
Nikita's Avatar
 
Join Date: Jan 2005
Location: Perm
Posts: 2,142
Rep Power: 4
Reputation: 10
Send a message via ICQ to Nikita
Сравнение 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++.
Что скажите ?
Высказывания типа все зависит от задачи не принимаются
У каждого есть свои любимые инструменты для работы ...
Nikita is offline   Reply With Quote Quote selected
Old Jan 25, 2005, 11:42   #16
Дошкольник
 
Join Date: Aug 2004
Location: Oxford
Posts: 141
Rep Power: 5
Reputation: 10
Согласен, но зачастую, чтобы доказать компактность Перла, приводят именно коды в 10 строчек. Не знаю, можно ли быстро написать такой код (наверно, вопрос опыта). В принципе, и на Яве можно писать очень коротко, если иметь заготовки.
Ablertus is offline   Reply With Quote Quote selected
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 13:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
This board was founded on September 29, 2001
Powered by Viper Internet

Affordable Web Hosting | ParevNet

Buy text link