LINUX.ORG.RU
ФорумTalks

Сравнение скриптовых языков

 , , , ,


2

4

Какие есть особенности, преимущества и недостатки у Perl, Python, Ruby, Tcl, Lua?

Пробовал гуглить, находил такое сравнение, но тут нет Tcl, и идёт сравнение мелких деталей синтаксиса.

Какие есть нормальные сравнения этих языков? Какой язык стали бы изучать вы и почему?

Если вы какие-то из них уже хорошо знаете, то чем каждый из них вам нравится или не нравится и почему?

★★★★★

Последнее исправление: Xenius (всего исправлений: 2)

Ответ на: комментарий от Xenius

В Tcl несколько систем ООП
Только зачем этим вообще пользоваться?

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

Только зачем этим вообще пользоваться?

Затем что это удобно, но не везде (в смысле не везде реализовано).

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 2)
Ответ на: комментарий от Reset

приведи-ка код на верблюде, намного более читаемый, чем хацкель? side by side, верблюд и хацкель

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от aidan

Я не модератор потому, что если буду, то будет тотальная чистка по 4.3, 5.1, 5.2 и 5.5, будет много воя, а оно мне надо этот геморрой? :}

Deleted
()
Ответ на: комментарий от Xenius

Только зачем этим вообще пользоваться?

Таки нужно единообразие. Рубисты не спорят про нужность/ненужность языковых конструкций. Никто не ставит цель написать программу без классов, или без модулей.. это все маразм как бы.

Только зачем этим вообще пользоваться?

С м.т.з. динамическое программирование не существует без объектов - мне нужны эффективные инструменты их конструирования.

несколько систем ООП

Это, опять же, плохо. Сколько реализации ООП есть для js, какие-то из них стали особенно популярны? А потом еще все плачут про callback hell -_-. А вот вышел coffee - и поперло, и ООП в js внезапно оказалось нужным))

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от special-k

Js просто делает это неправильно: например, в том же lua классов нет, но ООП делается настолько просто, что даже не нужны сторонние библиотеки для него.
А для tcl есть такая вещь, как SNIT, которая использует делегирование вместо наследования.

quantum-troll ★★★★★
()
Ответ на: комментарий от DoctorSinus

на котором написан один упоротый Jabber-клиент. И все.

Упорот он наверное тем, что в нём ( и только в нём, ЕМНИП ) реализованы ВСЕ возможности xmpp ;) Хотя мало кто им пользуется, т.к. tk страшноват.

router ★★★★★
()
Ответ на: комментарий от DoctorSinus

Какая жалость А язык на самом деле очень приятный, если не считать упоротости переименований вида sample/choice во время выхода 1.9… (^. ^)

Deleted
()
Ответ на: комментарий от special-k

Затем что это удобно, но не везде (в смысле не везде реализовано).

Для моих задач не нужно, а будет нужно, изучу дефолтный фреймворк

Xenius ★★★★★
() автор топика

Скриптовые недоязычки не нужны никому, кроме кульхацкеров-админов_локалхостов.

Не взяли, например, недоучившегося бакалавра типа технического ВУЗа на престижную высокооплачиваемую (в ДС старт - 120 000 рэ) должность Java-программиста, вот и находит сей горе-соискатель утешение в том, что Java - это выдумка глобалистов и рептилоидов, а надо изучать всяких хлам типа хацкеля или луа.

ПРУФ - http://www.dice.com:

lua - 46 вакансий

Java - 17744 вакансий

PS. Perl относительно годен - надо ведь под UNIX и GNU/Linux скрипты, созданные давным-давно бородатыми сисадминами поддерживать.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от olibjerd

Потому что там ответа не получил, а писать в теме перестали, так как она ушла с первой страницы. Да и тема была главным образом про Tcl — а эта тема про все остальные языки.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Sakka

То есть С#?

По сути да. Месяц назад начал с ним работать, относительно неплохой язык (если забыть о проблемах кроссплатформенности). Но вот библиотек под него маловато, очень много мёртвых проектов.

Sadler ★★★
()
Ответ на: комментарий от quantum-troll

Js просто делает это неправильно

Что значит не правильно?

ООП делается настолько просто

Ну и где же ваши gem и rails -_-
Нет и никогда не будет, т.к. никто никогда не договориться как же это делать правильно. Тупик.

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от Bioreactor

Скриптовые недоязычки не нужны никому, кроме кульхацкеров-админов_локалхостов.
PS. Perl относительно годен

Милый такой утиный синдром терминальная стадия))

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 1)

Если нет аллергии на замену скобочек отступами - бери python.

а ruby это такой современный перл, так что если нравится писать код, который никто кроме тебя и кучки других посвященных в таинство руби не поймет, то выбери его.

olegsov
()
Ответ на: комментарий от quantum-troll

миниатюрный встраиваемый ЯП

В эпоху ос на микроволновых печах..
Ну ладно, миниатюрный так миниатюрный..

special-k ★★★★
()
Ответ на: комментарий от olegsov

посвященных в таинство руби

Да хоспади, весь синтаксис руби можно описать тремя словами: «классы, модули и блоки» - какое еще нахрен таинство..

special-k ★★★★
()
Ответ на: комментарий от x4DA

ну если язык нужен не для дела а для чего-то другого, то да... но обычно надо еще иметь некие библиотеки и биндинги, а это всё значительно более вероятно найти для питона, чем для того что используют всего несколько человек на весь мир.

olegsov
()
Последнее исправление: olegsov (всего исправлений: 1)
Ответ на: комментарий от Xenius

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

да и кстати у TCL синтаксис чем-то напоминает башевский, не понимаю как на этом вообще можно писать. хотя некоторые и на брейнфаке пишут, всякое бывает.

olegsov
()
Ответ на: комментарий от CYB3R

Python — говно

ну конечо, там же краники как а С писать нельзя.

Perl — старьё

не старше чем С,C++

snaf ★★★★★
()
Последнее исправление: snaf (всего исправлений: 1)

Привет, Xenius. :)

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

Если именно изучать, чтобы изучать, то сначала Scheme, потом Tcl, т.к. они проще и можно сосредоточиться на кодинге, а не на костылях, которые неизбежно появляются в любом популярном языке, тем более со сложными синтаксисами вроде... всех в твоём списке, кроме Tcl.

Upd: Если кодить уже умеешь и есть задача, которую нужно решить, то остальные тоже есть смысл рассмотреть, т.к. костыли уже будут не так страшны как отсутствие батареек и нужных фич.

naryl ★★★★★
()
Последнее исправление: naryl (всего исправлений: 1)

Рубисты бессовестно украли все крутые питоновские идеи. Как после этого можно их сравнивать словно равных?!

Deleted
()
Ответ на: комментарий от Deleted

Идеи — не вещи, украсть их нельзя.

А что, в Ruby тоже управляющие конструкции отступами?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

Отступы нет, но близкое сходство двух языков несомненно. При том, что питон появился раньше.

Deleted
()
Ответ на: комментарий от naryl

Расскажи про задачу

Никакой одной конкретной задачи нет, а неконкретно — просто мне нужен какой-то язык чтоб писать всякие программки. Главным образом прототипирование — побыстрому накатать программу, чтоб потом при необходимости переписать на C-подобном (если нужно быстродействие). Кроме того я пишу только для консоли, а вдруг понадобится GUI? Как оказалось, я могу клепать что-нибудь простенькое в лазарусе, но это как-то не то... А изучать такой сложный язык как C++, чтоб делать в QtCreator не хочется. Да и сама Qt SDK очень тяжелая по сравнению даже с тем же Лазарусом. Мне сказали что проще и быстрее всего простенькие GUI делать на Tcl/Tk, что даёт +1 Tcl

то сначала Scheme

Зачем? Слишком много скобок, мне некомфортно с этим работать. А Common Lisp уже изучал, но дальше хелловордов и факториалов дело не пошло.

потом Tcl

Tcl уже. Оказалось, что про его лёгкость для изучения не врали. Прочитал пару доков и реально уже понимаешь язык, остаётся только вникнуть в детали... Правда тонкостей в Tcl, как оказалось не меньше чем в других языках.

отсутствие батареек и нужных фич.

И чего в Tcl не хватает, что есть в питоне например? Либ всяких over дофига.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Отступы нет, но близкое сходство двух языков несомненно. При том, что питон появился раньше.

А какие есть различия, кроме того, что Ruby более тормозной (хотя, казалось бы... куда уж дальше)?

Xenius ★★★★★
() автор топика
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Xenius

И чего в Tcl не хватает, что есть в питоне например? Либ всяких over дофига.

Ахаха.

tailgunner ★★★★★
()
Ответ на: комментарий от Xenius

ООП только через расширения, например. то есть можно сказать что нет.

можно было бы основы ООП освоить через понятный язык, чтобы потом проще было изучать C++, Java и другое.

кстати, Tk тоже входит в базовую поставку Python, так что простые GUI на нем писать как минимум не труднее.

olegsov
()
Ответ на: комментарий от olegsov

Основы ООП я и так знаю, другое дело, что смысла его использовать в программах, которые пишутся в одиночку почти нет.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

очень даже есть.

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

olegsov
()

Пишу около 2-х лет на перле. Для чего перл подходит:

  • Клиенты и серверы http
  • Управлялки устройствами по snmp, telnet
  • Пинговалки icmp (простые)
  • Резолверы dns
  • Сильная прокачка по событийке (асинхронность). Модули: EV, AnyEvent, POE.
  • Весьма простой и расширябельный ООП. Не стоит сравнивать с Java ООП. В перле все получится по-другому, см. пункт ниже.
  • Мульти-парадигма, в том числе и частичная функциональщина (каррирование, замыкания и т.п.).
  • GUI: Prima (под виндой пашет, но убого, надо рисовать няшные виджеты самому). wxWidgets aka wxPerl (нативное отображение на всех платформах) имхо вот-вот будет r.i.p., ибо много надо костылять из-за недоделок и багов. Tk, Gtk2 и Qt - не пробовал, но судя по отзывам бажное и течет. С событийкой EV/AnyEvent ни один gui-фреймворк без костылей не дружит.
  • Писать сишные модули через xs для перформанса.
  • Ну и КО: парсеры, скрипты-заменители bash.
  • Работа почти со всеми СУБД через единый DBI.
  • Можно поиграться с continuations через модуль Coro.
  • Мульти-платформа: под юниксом можно сказать все идеально. Под виндой сделано куча костылей, которые как-то работают. ActivePerl рулит и педалит :)

Для чего не подходит:

  • Мульти-поточность через одно место. Лучше забыть про ithreads/threads. Всегда думать в контексте: много процессов и единое API через SharedMemory, Unix Domain Sockets, TCP/UDP, etc. Если нужны co-routins aka fibers - есть модуль Coro.
  • Производительность. Она есть только в c/c++/etc и никакой интерпретатор не достигнет этих скоростей. XS-модули сильно спасут, но всеравно будет медленней. Но если делать для веба, то его давно всех (php, perl, ruby, etc) спас nginx :)
  • Для создания сверх-навороченной SOA я бы выбрал Erlang. Ибо он рулит и педалит в этом отношении. Недавно была новость про Whats'App, у него несколько сотен тысяч коннектов висят именно на Erlang-сервере. Аналог на перле пока только AnyEvent::MP, но там немало подводных камней. Тем не менее, как хороший прототип годится.
  • Для GUI - лучше наверное Qt/wxWidgets/Gtk (на си). Если тянет на Tk, то только в связке Tcl/Tk. Хороший пример SQLite Studio. На перле аналог тоже можно сделать.

ИМХО. Если есть вопросы - задавай.

gh0stwizard ★★★★★
()
Ответ на: комментарий от chg

Мне кажется, ТС хотел именно такой обзор.

CYB3R ★★★★★
()
Ответ на: комментарий от olegsov

если пишешь какую-нибудь библиотеку, например, то без ООП получится жуткий спагетти код

Можно использовать неймспейсы, они в Tcl изкоробки, причём ещё и иерархические.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от gh0stwizard

Если есть вопросы - задавай.

Реймонд ругался на перл, что код после некоторого времени становится нечитаемым и что программы на перле плохо расширяются. Это ещё актуально? (статья 2000 года).

Для чего перл подходит:
GUI
рисовать няшные виджеты самому
много надо костылять
судя по отзывам бажное и течет.

Может быть это надо было в раздел «не подходит»?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от gh0stwizard

Для GUI - лучше наверное Qt/wxWidgets/Gtk (на си). Если тянет на Tk, то только в связке Tcl/Tk. Хороший пример SQLite Studio. На перле аналог тоже можно сделать.

Так SQLite Studio на Tk или чем-то другом?

tailgunner ★★★★★
()
Ответ на: комментарий от Xenius

код после некоторого времени становится нечитаемым и что программы на перле плохо расширяются

Это на любом языке, когда чел забывает то что написал и не прокомментировал. Тоже самое, что открыть исходники чужой программы и ты нифига не понимаешь по началу)

Все зависит от размеров. Код за 500 строчек реально сложно читать и понимать. При этом, если очень захотеть, то все понимаешь/вспоминаешь.

Это ещё актуально?

Если перестать писать на перле, то как и другой ЯП/вещь/концепцию/технологию забываешь. И через огромный промежуток времени придется заново учить/повторять.

Может быть это надо было в раздел «не подходит»?

Не сказал бы. Спорно. Я вот все скучаю по Delphi, т.к. wxGlade и Visual Builder из Prima это полное г., как ни крути. Тем не менее, Prima более простая чем wxPerl. Я на wxPerl несколько дней лишь делал компоновку элементов, а также пытался понять как все работает... потому что доки гг, а примеры хоть довольно олдскульно и трушно написаны, но не охватывают все области применения. До многих вещей приходилось догонять методом тыка. Особенно касается ивентов и методов. Где-то ивент это конечный объект, а где-то и не конечный... Я такого еще нигде не видел. Но писать проги все же при сноровке можно и на wxPerl и на Prima.

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

Не сказал бы. Спорно.

«Можно сделать» — не то же самое, что «подходит».

GUI можно и на ассемблере писать, но зачем?

Код за 500 строчек реально сложно читать и понимать.

Может ещё от языка и оформления зависит?

Xenius ★★★★★
() автор топика
Последнее исправление: Xenius (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.