языки (программ.)
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-04 11:50 am (UTC)no subject
Date: 2007-10-04 11:57 am (UTC)no subject
Date: 2007-10-04 11:57 am (UTC)Вообще - интересное ощущение - я в ускоренном темпе прошел всю историю языков - начиная Алгола-60 и Фортрана (в школе) и воспринимаю это совсем по другому. В частности Java я не воспринимаю как что-то сколько-нибудь новое - как язык она (за исключением С-образного синтаксиса) очень близка к Simula-67 (которая в современных терминах называлась бы Object Algol-60)...
no subject
Date: 2007-10-04 11:58 am (UTC)no subject
Date: 2007-10-04 12:02 pm (UTC)И позвольте с Вами не согласиться: в Java конечно есть монструозные библиотеки, но синтаксис и семантика языка остались простыми и понятными,а вот в C++ есть слишком много конструкций, корректных с точки зрения языка, но способных оказать медвежью услугу использующему их программисту.
P.S. Я боюсь вы спутали Орфея с Морфеем
no subject
Date: 2007-10-04 12:07 pm (UTC)Простота синтаксиса Java сильно пострадала с новыми generics, но в целом он, конечно, остался намного проще C++. Но дело не в этом, а в том, что реальное использование языка, куда ни глянешь, завязано на дикие кучи всякого навороченного, простите, дерьма.
no subject
Date: 2007-10-04 12:07 pm (UTC)no subject
Date: 2007-10-04 12:07 pm (UTC)А угораздило ее понятно как - джава была слишком проста и орды послушных джава-программистов было легко накормить чем угодно. Это не C++, где STL десять лет внедряли и до сих пор у двух программистов - три мнения и пять вариантов hashtable
no subject
Date: 2007-10-04 12:11 pm (UTC)1) автоматическая работа с памятью
2) виртуальная машина, не надо перекомпилировать для разных платформ, и вместе с тем не очень медленная
3) объект есть объект суть объект, можно перестать морочить себе голову с object semantics vs. reference semantics vs. pointer semantics.
4) упрощение тех областей OOP, где C++ сильно перемудрил и привел к созданию огромного количества нечитаемого кода (operator overloading, multiple inheritance итд.)
Ну т.е. "C++ для людей".
no subject
Date: 2007-10-04 12:12 pm (UTC)no subject
Date: 2007-10-04 12:13 pm (UTC)Просто, IMHO, для ООП языка ссылки вместо указателей и сборщик мусора - это очень важные концепции.
no subject
Date: 2007-10-04 12:18 pm (UTC)АЛГОЛ-60 или АЛГОЛ-68?
Date: 2007-10-04 12:19 pm (UTC)Re: АЛГОЛ-60 или АЛГОЛ-68?
Date: 2007-10-04 12:23 pm (UTC)no subject
Date: 2007-10-04 12:24 pm (UTC)Re: АЛГОЛ-60 или АЛГОЛ-68?
Date: 2007-10-04 12:26 pm (UTC)... Много ты поймёшь из полуслов! ...
no subject
Date: 2007-10-04 12:27 pm (UTC)Ответ тривиальный - ООП и его реализация в Java способствует этому. Было бы странно, если было бы наоборот.
no subject
Date: 2007-10-04 12:27 pm (UTC)Т.е практическое применение С++ как языка программирования вне академического мира начинается году в 87-88. А массово лишь в начале 90-х, с появлением Турбо С++ (91-й год) и других дешевых компиляторов. Так что твое ошущение в 93-м году о том какой С++ старый язык было относительно ложным
no subject
Date: 2007-10-04 12:29 pm (UTC)http://staff.um.edu.mt/jskl1/talk.html
Не прошло и четверть века... :)
Впрочем с функциональными языками ситуация похожая - ML придумали в конце 70-х - и только сейчас оно входит в mainstream
no subject
Date: 2007-10-04 12:29 pm (UTC)... Nec tempora mutantur, sed mutamus tempora ...
no subject
Date: 2007-10-04 12:30 pm (UTC)Опять же, относительная простота языка ведёт к попыткам перейти от ремесленных методов к промышленным. Десяток инженеров-технологов и тысяча работяг на конвейере вместо сотни мелких ремесленников.
Синтаксис языка
Date: 2007-10-04 12:31 pm (UTC)Необходимость запоминать синтаксические конструкции возникает для языков с эклектичной концепцией.
Если же концептуальное устройсво языка эффективно и красиво (а C++ - именно такой язык), то понимание синтаксиса должно ассоциироваться с концепцией (т.е., упрощая, выводиться из нее).
В этом смысле, синтаксис C++, как правило, естественен.
no subject
Date: 2007-10-04 12:34 pm (UTC)Как учат классики, "любая проблема дизайна может быть решена введением нового уровня абстракции, кроме проблемы слишком большого количества уровней абстракции". Вот это, собственно, и произошло.
Я был первокурсником в 97м, и помню Джаву молодой. Но, впрочем, и STL тоже.
no subject
Date: 2007-10-04 12:36 pm (UTC)Поначалу они были только стандартные и представляли собой единую систему. А потом эту систему раздули и растащили в разные стороны библиотеками для нестандартных фич и конструкций. Ну и эволюция несовместимости самого языка. Джава казалась хорошей поскольку исходно могла больше, чем мог стандартный C++ со стандартными библиотеками.
Нужен новый язык, с новым базовым набором библиотек покрывающий всю ф-ность стандартной джавы и захватывающий большую часть сторонних билиотек в осмысленном, систематизированом виде. Можно и на старом движке но нужно отказаться от обратной совместимости.
Просто так на это нет смысла идти, так что надо иметь еще фичи упрощающие жизнь современному девелоперу, в джаве такой стала сборка мусора и др. фичи.
Re: АЛГОЛ-60 или АЛГОЛ-68?
Date: 2007-10-04 12:37 pm (UTC)