LINUX.ORG.RU

ruby vs python vs perl

 , ,


0

5

по работе мне приходится достаточно много времени программировать на Ruby, редко пишу скрипты на Python и вот недавно открыл для себя Perl. До этого писал только небольшие однострочники на этом прекрасном языке, а сейчас посмотрел его более подробно и честно пока не увидел каких-то принципиальных отличий от Ruby, но если мне не изменяет память, perl существовал еще до динозавров, что наводит на вполне резонный вопрос: а зачем придумали все эти модные ruby и python-ы, раз уже есть прекрасный perl? Ну да, у него немного другой синтаксис, ну некоторые вещи делаются чуточку иначе, но принципиально-то он ничем не отличается на мой взгляд. Очень хотелось бы услышать мнение более опытных коллег по данному вопросу.

P.s. понятно что тема несколько флеймовая, но мне на самом деле просто хочется разобраться и более осознанно сформулировать точку зрения по данному вопросу.

Перемещено maxcom из linux-org-ru

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

Нет магии, руби ведет себя так изначально, его поведение неизменно. Магией называют то, реализация чего не очевидна. Реализация руби очевидна, она состоит из нескольких простых правил, повторяющихся подобно фракталу на твоей аватарке. А autobox мне видится чем-то инородным, меняющем поведение, хотя меня и удивила гибкость перла.

special-k ★★★★
()
Ответ на: Чувак от shimon

в питоне геттеры и сеттеры не нужны

ок.

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

Важно то, что перл достаточно гибок и выразителен

Да-да, так и сказал. А если модулями сделать все как в руби, получится руби.

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

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

name=

Что это за «=»? Сахар.
А «@» в пайтоне тоже, конечно, сахар, но универсальный. Декораторы применяются к методам, функциям и классам. То есть в данном случае геттеры/сеттеры в пайтоне реализованы с помощью более общей концепции, забесплатно. А где, кроме именования методов в руби используется «=»?
__name да, таки глубже, чем _name будет находиться :-). Лень объяснять.

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

в основном, из-за обязательных self и return, а также в Python рекомендованный индент 4 пробела, а в Ruby - 2.

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

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

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

хорошего оупенсорсного руби-проекта

такого нет

(возможно понятия хорошего различны)

Jills
()

Перл — write-only, питон — ООП на костылях. Вот поэтому и был придуман руби.

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

Ах, да,

Что это за «=»? Сахар.

У тебя сахар головного мозга. Сходи в гугли, посмотри что такое синтаксический сахар, потом приходи и покайся.

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

Перл — write-only, питон — ООП на костылях. Вот поэтому и был придуман руби.

Это что же, нечто вроде долгожданной silver bullet на все случаи жизни?

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

Спасибо, давненько я так не смеялся.

Хорош silver с изрядным привкусом, запахом и видом shit.

PS: Апологетам С++ — я против С++ в принципе ничего не имею, сам его при необходимости пользую. Так что не трудитесь бухтеть. Но в качестве silver bullet — это нонсенс.

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

Кстати, tazhate, это:

Хорош silver с изрядным привкусом, запахом и видом shit.

тянет на «разжигание флейма про С++, (-7)», как ты думаешь?

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

Я то да, а вот ты пришёл явно некормленным, раз начал вещать про silver bullet. Покормись где-нибудь на винфаке :}

Deleted
()

Перл, как известно, нельзя распарсить. Его можно только выполнить.

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

начал вещать про silver bullet.

Где я вещал-то? Один раз спросил.

Покормись где-нибудь на винфаке

Это сейчас мода такая, в ответ на любой вопрос на винфак посылать? Небогатая фантазийка.

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

Ну так ты же вывел из двух пунктов silver bullet. Видимо это какая-то особая тролльская логика :}

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

У тебя «вопрос» и «вывод» — это одно и то же? Забавненько.

Вот если бы ты ответил на самый первый вопрос, я бы имел основание для вывода. А ты сразу звезданул про С++. А я же ещё и виноватым у тебя оказался, mirable dictu.

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

Вопрос, ага. Любой, вещающий про силвербуллиты на ЛОРе, троллит. Что касается плюсов, да, сарказм в интернете не ловится.

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

Когда речь идёт о С++, сарказм чрезвычайно трудно ловится. Как в интернете, так и в реале. :)

Не вести же базу данных по всем лоровцам и их предпочтениям в ЯП. :)

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

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

Чрезмерное использование смайликов ведёт к тому, что они перестают детектироватсья наблюдающими… есть ещё такое дело %)

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

Да конкретно Numeric унаследуется, и сможет создавать объекты (непонятного мне назначения), но вот Fixnum или Float создать действительно не удасться, у этих объектов(классов) нет метода new. Объекты чисел и символов инициализируются естественным образом, это действительно исключение. Но сами объекты - такие же как и остальные. Причем, не уверен, что этого нельзя сделать, например, в rubinius, но мне лень выяснять. Исключения есть всегда.

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

Декораторы применяются к методам, функциям и классам.

И все они ужасны. Этот костыль не может быть сахаром. В руби внезапно удается достичь гораздо большей гибкости без всяких этих «декораторов» и селфов.

Что это за «=»?

Последний символ в названии метода.. Это обычный метод, который называется «name=», у него даже может быть несколько аргументов (как у любого др метода), но в этом случае его придется вызывать с помощью send, которым можно вызвать любой метод.

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

Декораторы применяются к методам, функциям и классам.

И все они ужасны. Этот костыль не может быть сахаром. В руби внезапно удается достичь гораздо большей гибкости без всяких этих «декораторов» и селфов.

А можно вопрос от начинающего изучать руби: какие альтернативы декораторам в руби?

iVS ★★★★★
()

У меня другой вопрос. Если ровесник динозавров perl так хорош, то почему на нём так никто и не сделал библиотеки для анализа и визуализации данных, типа numpy/scipy/matplotlib? Если бы всё это было на perl или на ruby, мне лично питон был бы не нужен.

yvv ★★☆
()

что мешает тебе писать на том, что нравится?

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

альтернативу декораторам property и setter ты уже видел.

То, что ты приводил, - это детский лепет на лужайке.

Я ждал от тебя что-то вроде «define_method», но вижу, что что-то спрашивать бесполезно.

Приводи примеры

На примерах каждый объяснять может. А общее понимание у тебя отсутствует.

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

почему на нём так никто и не сделал библиотеки для анализа и визуализации данных

Хороший софт пишется не на лучшем языке, а на том, который лучше знаешь. Значит, создатели визуализации данных лучше знали питон. До сих пор ни на одном из популярных языков не создано аналога Maxima, это же не означает, что лисп лучше? Просто, когда Maxima была востребована и были люди, способные ее воплотить, лисп был на пике популярности в академической среде. Сегодня, возможно, отдалось бы предпочтение хаскелю, как наиболее популярному в академической среде.

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

Хороший софт пишется не на лучшем языке, а на том, который лучше знаешь.

Меня это в последнее время дико бесит. :)

*ушёл срать кирпичами*

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

Explicit is better than implicit.

К self это не относится.

Ещё как относится. Что означает в руби @ перед именем переменной? А вовсе не очевидно, что она означает, если не смотреть контекст.

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

… для тебя. Ты забыл приписать.

По-твоему, я и все здесь отписавшиеся могут выражать чьё-то, кроме своего, мнение? Что ни день, то новости.

Virtuos86 ★★★★★
()

раз уже есть прекрасный perl

Один из немногих неэзотерических ЯП, синтаксис которого не сильно отличается от шелла.

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

А у тебя сахар другого места, наверное. Потому что не выходит кое-что и накапливается.
Что за мода встревать в чужой разговор, блеать.
Извини, что не каюсь, настроения нет. Как и ходить «в гугли».

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

Последний символ в названии метода

ААААаааа[a-zA-Z_][a-zA-Z0-9_], что за наркомания?

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

А разница между руби и питоном в том, что на питоне можно делать продакшн, а с руби только быть хипстером и ходить на конференции.

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

А если модулями сделать все как в руби, получится руби

Именно эту мысль и сказал ТС. Вопрос - нафига было запиливать отдельно какой-то руби если все тоже самое можно было сделать в перле.

no-such-file ★★★★★
()
Ответ на: комментарий от Virtuos86

Что за мода встревать в чужой разговор

Это интернет, здесь нет чужих разговоров.

In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express. It makes the language «sweeter» for humans to use: things can be expressed more clearly, more concisely, or in an alternative style that some may prefer.

Итак, в каком месте whatever= это «alternative style that some may prefer»?

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

Твоя правда! Иду стреляться.

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

Серьезно, это действительно интернет? :-)
Выпендрежники такие выпендрежники. Ты на русскоязычном форуме на русском цитату не мог привести? Или там какой-то рокет-сайнс, не имеющий аналога?
А тебе знакомо такое понятие как «контекст»?
В котором мое упоминание синтаксического сахара имело тот смысл, что во многих случаях код на Руби может быть лаконичнее банально за счет большей пересахаренности? А не потому, что он лучше внезапно.
Да, name= это не сахар. Ввел в заблуждение. Хотя special-k не возбудился почему-то. Уж на что он любитель.

Virtuos86 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.