LINUX.ORG.RU

[без флейма]Выбор языка программирования (perl, python, ruby, ...)


0

2

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

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

Python. Когда-то начинал изучать но не понравилась ОО-модель, точнее расположение методов в корневых классах, типа того что join является методом строки а не массива. Опять же, сейчас разговаривал со знакомым тех-директором, он сказал что у них трудности с поиском питонистов (они вообще используют питон, пхп и яву в своих проектах). Опять же, сейчас идёт какой-то тяжёлый переход 2.x->3.0.
-- django - очень забавно, но я так и не понял, как (и зачем) мне использовать ORM в рамках МОИХ проектов. У меня всё что может быть вынесено, выносится на уровень базы данных (хранимки и прочее).

Ruby. Плотно не смотрел.

Возможно есть что-то ещё?

В рамках бреда смотрю на javascript (сервер-сайд) и lua.

PHP. Не хочу даже рассматривать.
Java. Не хочу даже рассматривать.

Опять же, хочется чтобы язык был достаточно шустрым а также чтобы он умел нормально работать с СУБД, то есть всякие bind чтобы поддерживались нормально.

Чем занимаюсь:
- пишу сайтики, магазинчики, web-ERP для конкретных бизнесов под заказ, всякие OLAP-образные фиговины.

Хочется выслушать мнение по следующим вопросам:
1. плюсы и минусы от тех кто много работал с данными языками
2. от тех кто нанимал сотрудников
3. перспективы языков.

Просьба не сваливать это всё во флейм.

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

> пока ситуация хороша тем, что входной порог у Руби довольно высок

Щито?

balodja ★★★
()

>В рамках бреда смотрю на javascript (сервер-сайд) и lua.

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

Что касается javascript, то для серверной части годится только nodejs (готовых к использованию наработок на основе SpiderMonkey не видел), но у него на данный момент версия 0.2.* и есть риск скорой смены API. В остальном идеальный кандидат на замену для perl(на себе проверял). Да и пишущих на javascript на рынке труда как говн^W^W можно найти без проблем(про качество выдаваемого ими кода скромно умолчу, но все и так знают).

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

PHP. Не хочу даже рассматривать.

Java. Не хочу даже рассматривать.

Я такого же мнения :)

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

> Смотрю, пытаюсь понять, можно ли у тебя не лиспом рисовать хтмл,
> а взять готовую html страничку в качестве шаблона?

Для шаблонов я переписал Google Closure Templates на CL, в примере pastebin в конце есть полный файл с шаблонами. Я тут всем показывал скринкаст моего основного приложения, в котором cl-closure-template используется по полной программе как на сервере, так и на клиенте, очень удобно.

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

Да просто нет такого количества лисперов чтоб создать полноценное сообщество. А то б такая же секта была.

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

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

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

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

Вот приведу тебе пример: сейчас занимаюсь разработкой под iPhone:Cocoa Touch _ОЧЕНЬ_ удобный и продуманный фреймворк, писать одно удовольствие. Но в самом языке Objective-C есть одна проблема: нет автобоксинга примитивных Сишных типов, т.е. если напишешь

NSArray *array = [NSArray arrayWithObject:10];

программа упадет, надо самому вручную

NSArray *array = [NSArray arrayWithObject:[NSNumber numberWithInt:10]];

А что Objective-C++ для iPhone нет? Что там где возможно исполбховать контейры из STL, а не уродцев из Foundation Kit.

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

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

Программа, на 100% отформатированная форматтером, конечно, лучше неформатированного текста, но я лично всё форматирую руками, те же переносы строк форматтер делает, чтобы уложиться в n символов, перенося на последнем токене, а я переношу так, чтобы это было читабельно. Изредка использую форматирование для вертикального выравния токенов. В общем текст программы это больше чем AST.

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

> Да просто нет такого количества лисперов чтоб создать

полноценное сообщество. А то б такая же секта была.


Нет, лисперов достаточно, но чего действительно не хватает CL для широкой популяризации, так это немного религии ;) Уж очень они разные, а сам язык по дизайну весьма сбалансирован и не выделяет явно какое-либо направление. А RoR всё признаки налицо: есть пророк, есть очень жёсткая идеология (отклоняться от которой очень больно, её надо принять) и значительная часть общения в сообществе направлена на воспевание его интеллектуальности, мощи и т.п.

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

> Нет, лисперов достаточно, но чего действительно не хватает CL для широкой популяризации, так это немного религии

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

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

>А что Objective-C++ для iPh

есть, но С++ это еще тот писец

контейры из STL, а не уродцев из Foundation Kit.

кто тут уродец это еще можно поспорить. Foundation Kit по удобству работы заруливает STL в минус бесконечность. Собственно боксинг/анбоксинг не так уже надоедает по сравнению с часа проведенными за дебагом С++ кода из STL

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

кто тут уродец это еще можно поспорить. Foundation Kit по удобству работы заруливает STL в минус бесконечность. Собственно боксинг/анбоксинг не так уже надоедает по сравнению с часа проведенными за дебагом С++ кода из STL

Динамическая типизация даёт свой пласт возможных ошибок для отладки.

Begemoth ★★★★★
()

какой тег удачный, ну

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

>Динамическая типизация даёт свой пласт возможных ошибок для отладки.

зато дает огромную кучу преимуществ.

А на собственном опыте я понял что статическая типизация еще не означает что не будет проблем с типами.

Вот кстати классический пример который я даю адептам статически-типизированных языков

<code> #include <stdio.h> #include <string> void f ( const std::string& s ) { printf ( «%s\n», s.c_str () ); } int main ( int argc, char * argv [] ) { f ( false ); return 0; } </code>

так что нанимай умных программистов которые знают что делают, вот и весь секрет

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

А на собственном опыте я понял что статическая типизация еще не означает что не будет проблем с типами.

Но их будет меньше. И тем меньше, чем будет меньше неявных преобразований.

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

Вот кстати классический пример который я даю адептам статически-типизированных языков

Ну ты ещё вспомни вагод и маленькую тележку способов выстрелить себе в ногу в C++.

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

>Ну ты ещё вспомни вагод и маленькую тележку способов выстрелить себе в ногу в C++.

ну вот посмотри:

$ cat test.cpp #include <stdio.h> #include <string>

void f ( const std::string& s ) {    printf ( «%s\n», s.c_str () ); }

int main ( int argc, char * argv [] ) {    f ( false );    return 0; } $ g++ test.cpp $ ./a.out terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct NULL not valid Abort trap $ g++ -v Using built-in specs. Target: i686-apple-darwin10 Configured with: /var/tmp/gcc/gcc-5664~50/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1 Thread model: posix gcc version 4.2.1 (Apple Inc. build 5664)

вот самый статический С++, но компилятор даже не выдал предупреждения. Так что статическая типизация не страхует от проблем.

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

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

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

> вот самый статический С++, но компилятор даже не выдал предупреждения.

А там нет ошибки, связанной с типами.

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

Там же вызывается конструктор string( const Char* str ), а false это 0.

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

Можно написать короче данный пример

#include <string>
int main (int , char **)
{
	std::string s(false);
	return 0;
}

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

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

Зачем возлагать на людей то, что может сделать компьютер? Приведённая проблема специфична для С++, но не для Java или С# (про семейство ML пока умолчим).

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

> Динамическая типизация даёт свой пласт возможных ошибок для отладки.

юнит-тесты помогут

ugoday ★★★★★
()

C.

Но если «сайтики, магазинчики, web-ERP для конкретных бизнесов под заказ, всякие OLAP-образные фиговины» то Perl без вариантов. Ничего кошерней не встречал.

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

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

> В принципе, можно один в один переписать на нём перловые программы


...чтобы потом это купил Yahoo! и переписал на нормальном языке?

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

> использую питон уже 2 года, нравится зависимости никакой.

а брат? брат-то как?

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

> у лисперов

натуральная секта

лисперов


секта



ahahaha oh wow

anonymous
()

Да, Perl + javascript (сервер-сайд) - других вариантов пока нет.

NuffSaid
()

Почему С? Посмотри на проект courier-mta. У них sqwebmail написан на С. Очень быстро и стабильно работает, но порог вхождения очень высокий.

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

> Но я говорю о достаточно разумных (для работодателя) ценах, например 60-90.

default city

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

> Java. Не хочу даже рассматривать.

Ну и вообще, я её достаточно наелся.

Всё ясно с тобой, неасилятор. С чего ты вообще взял, что будет легко? Java - мощнейшая технология современности, но для её эффективного использования надо сперва пошевелить серым веществом. Это тебе не похопе, взял, набросал говнокода и вперёд. Тут требуется интеллектуальное вложение, которое потом окупается сторицей.

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

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

> Опыт работы с j2ee (около года), опыт развёртки больших явовских приложений на разных платформах... песня

Вот уж где-где, а в Java(EE) такие вещи как сборка, деплоймент, юнит-тестинг, кластеризация за многие годы вылизаны до зеркального блеска и работают, как часики. То, что у тебя с этим были проблемы, лишь ещё раз доказывает ниасиляторский характер претензий к Java.

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

«Java - мощнейшая технология современности»

Только писать «мощнейшие» приложения на ней (действительно мощные и стабильные) могут лишь единицы. Все из-за того, что она требует не столько знание языка Java, сколько всех ее баков и путей их обхода.

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

> чувство внутреннего дискомфорта вызывают мои многомегабайтные монстры

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

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

> требует не столько знание языка Java, сколько всех ее баков и путей их обхода.

Вот только не надо тут быдлокодерских отмазок, ладно? Чтобы эффективно использовать мощь Java, надо знать структуры данных и алгоритмы, иметь представление об их сложности, а также быть знакомым с принципами построения ОС, сетевых стеков и всего остального. «Багами и путями обхода» прикрываются только code monkeys, ниасилившие вышеперечесленное, ну и плюс немножко матана.

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

> надо знать структуры данных и алгоритмы, иметь представление об их сложности, а также быть знакомым с принципами построения ОС, сетевых стеков и всего остального

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

ACR
()

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

sol13 ★★★★★
()

С perl вообще тяжело слезать, но уже если захотелось - почему бы не попробовать реализовать проект на каждом из этих языков? Чтобы принять такое решение нужно пробовать самому все языки, так как это вопрос вкуса. Мне нравится python, django, etc, но это не значит что понравится тебе. btw, django != orm. В неправильном количестве сотрудников виновата неправильная зряплата, ну а уж о перспективах расскажут разве что экстрасенсы на ТНТ.

x-term ★★
()

Тоже сидел на перле, потом попробовал питона.

Сперва понравился, есть интересные фокуcы типа list comprehension. В общем стал плотнее использовать в средних проектах и маленьких скриптах. В итоге он оказался ... хм ... длинноватым. То тут то там сделано ... хм ... не локанично. Чего только стоят регекспы. В общем он непригоден для повседневного скриптописания. Длинные проекты еще можно, а вот скрипты уже не то — многа букв. Т.е. полностью перл не заменит.

А вот руби вполне может. Очень локаничный и красивый. Использовал и для скриптов и в проектах (на рельсах и на синатре). Очень читабельный. Минимум повторов и мусора в коде (я про self-ы питона и $, @ перла, и т.п.). Довольно логичен. Не забыли и про фенички типа b ? a : c, ||=, +=, анонимных функций, yield и т.п. Удобно сделана функциональная составляющая. Объективная — блеск, в питоне хуже, а про перл вообще молчу. Метапрограммирование в ассортименте. И можно даже делать однострочники в командной строке, как в перле.

Скорость — это штука временная. Подпилят, отладят, будет быстрее. А ... хм ... «многа букв» питона уже не исправить.

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

> Объективная — блеск, в питоне хуже,

Объектная, конечно же. Две мысли слились в голове и образовали такой казус :)

В общем питон лучше перла в целом, но в некоторых местах проигрывает.

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

Это всё субъективно. перл — лет 5-7, питон - 2 года, руби - 1 год :)

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

ITT лютый БУГУРТ лиспофага. Смирись уже с тем, что лисп живёт исключительно на компах у кучки фанбоев - wannabe-илитариев. А Java - везде, от мощных серверов, мейнфреймов и кластеров до мобилок и борткомпьютеров.

Тогда и попка поменьше болеть будет.

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

> Смирись уже с тем, что лисп живёт исключительно на компах

у кучки фанбоев


Странно, а у нас он на боевых серверах, да и в Google теперь тоже. У вас точно не устаревшая информация?

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

за 50 лет истории Лисп дорос до серверов. Надо ещё 50 лет стабильного развития для полного успеха.

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