языки (программ.)
Oct. 4th, 2007 01:37 pmЯ задумался недавно - как часто задумываюсь наедине с собой, бессонной ночью, ворочаясь на кровати, в те часы, когда все наносное, вся суета существования растворяется в темноте и на поверхность выходят самые беспощадные вопросы, самые жестокие дилеммы и все нескончаемые споры - о Джаве. Как все же она умудрилась из интересного и многообещающего языка так быстро превратиться в неподъемное чудовище, обросшее сотней неповоротливых фреймворков и чудовищных аббревиатур?
Так и не решив этот вопрос, моя измученная душа нашла, наконец, свой упокой в объятиях Морфея.
А сегодня я подумал: почему, собственно, "так быстро"? Джаву придумали в 93-м, а всерьёз обсуждать стали в 94-м. Это 13 лет назад. Как по-разному воспринимается время "до нас" и "при нас"! В 93-м году, будучи первокурсником, я воспринимал C++ как давно существующий, совершенно стандартный язык; казалось, что он был всегда (я знал, когда его придумали, но я говорю об ощущениях). А C++ тогда существовал в более-менее современном виде 10-11 лет. Меньше, чем возраст Джавы сейчас; но Джава и сейчас кажется недавним новшеством.
Интересно, те, кто сейчас начинают учиться программированию - им тоже Джава кажется чем-то незыблемым и всегда существовавшим, как мне казался C++?
Так и не решив этот вопрос, моя измученная душа нашла, наконец, свой упокой в объятиях Морфея.
А сегодня я подумал: почему, собственно, "так быстро"? Джаву придумали в 93-м, а всерьёз обсуждать стали в 94-м. Это 13 лет назад. Как по-разному воспринимается время "до нас" и "при нас"! В 93-м году, будучи первокурсником, я воспринимал C++ как давно существующий, совершенно стандартный язык; казалось, что он был всегда (я знал, когда его придумали, но я говорю об ощущениях). А C++ тогда существовал в более-менее современном виде 10-11 лет. Меньше, чем возраст Джавы сейчас; но Джава и сейчас кажется недавним новшеством.
Интересно, те, кто сейчас начинают учиться программированию - им тоже Джава кажется чем-то незыблемым и всегда существовавшим, как мне казался C++?
no subject
Date: 2007-10-05 11:52 pm (UTC)Ну и что, что он начинался, как макро-язык? Собственно, именно это я и имел в виду. Языки, которые создавались для конкретных нужд, более жизнеспособны, чем языки спроектированные (Ада, Модула,пр). А С вообще создавался, примерно, как портабельный макроассемблер. Ну и что?
A, хороший пример еще - Lua. Это был вообще не язык, а формат конфигурационного файла. А развился в один из самых практически полезных скриптовых языков.
Ставить в один ряд С и Perl вообще очень некорректно.
Почему?
Паттерны пришли из SmallTalk.
См. про паттерны выше.
Покажите, пожалуйста, язык без фреймворков и библиотек, который получил бы хоть какое-то развитие. Уже давно известно: нет библиотек - нет интереса к языку.
Ой, нет, тут misunderstanding. Я как раз за штатные средства языка + стандарные библиотеки. By contrary, когда говорят о фреймворке, то имеется в виду как раз нештатное решение. Первое - лучше, на мой взгляд.
Любая ерунда на любом языке займет сотни строк кода. Если не в самом языке, то в подлежащей реализации.
Ну меня-то волнует не реализация, а собственная продуктивность. Я пишу массу практически полезных one-liner'ов на Perl, каждый из которых занял бы сотню линий (это не преувеличение) на Java.
no subject
Date: 2007-10-06 09:22 am (UTC)Вот тут немного спорно, мне кажется. Фреймворком сейчас называют все и вся, что может быть выделено в пакет или технологию. AJAX вон уже тоже фреймворком звать начали. НО идея я понял, здраво.
Любопытство взыграло. А вам не будет сложно привести пример? Я очень плохо знаком с Perl и мне интересно, что именно вы имеете в виду. Если не сложно, был бы благодарен.
no subject
Date: 2007-10-06 08:26 pm (UTC)Конкретный пример, на который я ссылался - у нас 2 линии perl заменили три здоровенных Java-класса. Это было на прошлой работе, полный код я привести не могу - он proprietary, но могу подробно описать. Речь шла о протоколе связанном с цифровыми камерами, серверная часть. Так получилось, что еам нужно было срочно (за несколько часов) протестировать новый протокол и задача была - прочесть данные в текстовом формате, отпарсить это, немного заменить кое-что, затем перекодировать в бинарный протокол и послать по TCP/IP по определенному адресу. Perl позволяет очень эффективно такие задачи благодаря
- regular expressions на уровне языка
- встроенный функции pack и unpack. Они очень удобны для сериализации - десериализации данных, т.е. бинарных протоколов
- операторы map{} и grep{} которые позводяют удобно работать с массивами
- и пр.
Этот пример, конечно, андекдотичский, обычно речь не о сотне линий vs. 1 линия, но просто о существенно более коротком коде.
Обычные операции, для которых (лично мне) удобен Perl - прочесть файл, что-то поменять или посчитать статистику, сгенерировать какие-нибудь тестовые данные, и пр.
Особая ценность Perl - в библитотеке CPAN. Это единая распределенная библиотека Perl, с некоторой автоматизацией доступа. Аналоги для других языков имеются, но по широте покрытия CPAN уникален. Пожалуй, это самый яркий пример code reusability, который я видел.
***
Но в общем, я перечитал то, что написал раньше, и создается неправильное впечатление, что я ругаю Java или доказываю, что другие языки лучше. Нет, я совсем не имел это в виду. В любом языке есть слабости, и их обсуждение никоим образом не значит, что язык негодный. Собственно, за последние 10 лет я написал на Java больше кода, чем на чем бы то ни было, так что у меня с ней непростые, но не плохие отношения :)
no subject
Date: 2007-10-06 08:29 pm (UTC)no subject
Date: 2007-10-06 08:29 pm (UTC)Спасибо.