Pull to refresh

Comments 97

А в чем измеряется вертикальная шкала на первом графике? 35 миллионов чего, устройств?
Google Trends в 90-потёртом году? Я чего-то не знаю?

Вероятно, конечно, всё же некий trend(«java programming») в вакууме, но что, интересно, значат провалы в ноль, до и после 2000…
И все же, что помогло языку Java «войти в каждый дом»?
UFO just landed and posted this here
Судя по графику — похоже, что Android.
А до андроида были еще телефоны с JavaME.
Простота и логичность. Я писал на Java порядка 5-7 лет (до этого стандартные турбо паскаль, делфи), потом немного писал на C#. Как по мне? Java являет собой именно ту средину между нужными возможностями и ненужными усложнениями языка. На java можно написать мобильную игрушку, и производительный сервер на netty, и в обеих случаях будет ощущение, что язык тебе помогает, а не мешает.
ощущение, что язык тебе помогает, а не мешает.
А с C# оно, по-вашему, более или менее выражено?
C# у меня оставил впечатление некой перегруженности (это лишь мое субьективное мнение). Например, в Dict доступ к обьекту можно получить, используя квадратные скобки — a[«key»]. Вроде бы приятно, но если, например, ключами будут числа — то запись вида a[4] уже однозначно нельзя трактовать — a это массив или Dict?

Я понимаю, что это с какой-то стороны мелочи, и это дело привычки, и IDE покажет тип обьекта. Но именно строгость и прямолинейность Java в этих вопросах (ах, программист, хочешь удобную работу с Map — окей, держи — map.put(«key», value"), value = map.get(«key»)) мне нравится. Мне нравится, что в большинстве случаев мне не нужно задумываться про то, что я пишу — я лишь переношу мысли с головы в код. Из C# у меня такого ощущения не возникало.

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

P.S. А еще в Java шикарнейшие enum.
то запись вида a[4] уже однозначно нельзя трактовать — a это массив или Dict?

А это зачем-то надо однозначно трактовать?

Если я вижу запись вида a[4] = 5, здесь есть два варианта: Dict или массив. Если я читаю незнакомый мне код, это однозначно заставит меня на секунду задуматься (вспомнить) две вещи: 1) что же такое «a» (какую роль играет эта переменная) 2) Какой тип этой переменной. В зависимости от типа эта переменная может играть разную роль.

UPD: Еще момент — приходится удерживать в памяти лишнюю сущность — знание, что из нескольких вариантов типов «а» является каким-то конкретным типом. Учитывая, что кратковременная память способна удерживать не так уж и много, разумно предположить, что лучше максимально освобождать ее на другие задачи.

Как по мне, лучше пусть язык не заставляет над таким задумываться. В какой-то мере это напоминает ситуацию из JavaScript — там вообще можно что угодно делать, но народ потихоньку пытается отходить на что-то более строгое — TypeScript, CoffeScript.
Если я вижу запись вида a[4] = 5, здесь есть два варианта: Dict или массив.

Намного больше, на самом деле.


1) что же такое «a» (какую роль играет эта переменная)

Это должно быть очевидно из названия.


2) Какой тип этой переменной.

Зачем вам эта информация?


В зависимости от типа эта переменная может играть разную роль.

Это плохой дизайн (до тех пор, пока вы не делаете полностью type-based programming). Семантика переменной должна определяться по ее названию, а не по типу (и уж точно не по тому, какой тип коллекции использован для переменной).

Это должно быть очевидно из названия.

Семантика переменной должна определяться по ее названию, а не по типу (и уж точно не по тому, какой тип коллекции использован для переменной).


Я с вами абсолютно согласен. Но здесь такой момент, что далеко не все программисты обладают достаточной квалификацией (а иногда и желанием) писать такой хороший код. И часто так бывает, что переменным присваивают неподходящие имена. Тогда хотя бы знание типа помогает разобрать такой код. Такой код встречается у многих проектах — например, я использую популярный движок libGDX — он opensource, поэтому я часто заглядываю в кишки, посмотреть как и что делается. Так там много чего попадается, что не попадает под определение «хороший код». Где-то красоту приносят в жертву оптимизации. В общем, надеяться на то, что в переменных всегда будут правильные имена нельзя :)
В общем, надеяться на то, что в переменных всегда будут правильные имена нельзя

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


На самом деле, это очередная вариация дискуссии var vs explicit typename, и Липперт давно все сказал по этому поводу.

никакая оптимизация не может оправдать плохое именование.

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

Именно в таких случаях именованию надо уделять особое внимание, чтобы те, кто придут потом, понимали, что происходит. Это вопрос исключительно лени/квалификации разработчика, на скорость выполнения это не влияет никак.

Воля гугла, что привело к основной проблеме андроида — он не может работать нормально и конкурировать с айос. На этом каждый дом заканчивается. Почему жава была выбрана тем же гуглом то же понятно, но скорее выбор в пользу типа языка, а не самой жавы, а сама жава выбрана как наиболее популярный представитель.
UFO just landed and posted this here
Количество китайфонов никого не интересует. Отечественный автопром тоже неплохо продаётся. Тут имеется ввиду не кол-во продаж корейфонов в 3раза дешевле, а конкуренция с т.з. качества. Аккумулятор в 3раза более ёмкий, а садится телефон в 2раза быстрее. Тормозит(без топового железа лучше адроидфон не запускать, а тот что с топовым сейчас вроде как более плавный, но не то), лагает(вменяемая работоспособность не постоянна), падает(качество приложений) и не может работать вменяемо. Ту же проблему тормозов интерфейса решили пару лет назад и то усилением железа, что не является решением проблемы.

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

Ух ты… оказывается телефоны Apple теперь представлены в каждом ценовом сегменте.
Где я такое писал? Правильно — нигде. Телефон андроид из ценового сегмента «не топ» неюзабелен в принципе. Можно сколько угодно долго себя обманывать, но это так.

А для ценового сегмента «не топ» — есть бушные айфоны. И опять же — цена не оправдывает, когда разница в цене не порядок, а от силы 2раза. Телефон мог бы работать лучше, но он не работает и все минусы проявляются как раз такие на «не топ» сегменте.

На сам андроид никто не гонит, но факт есть факт — жава — его слабая сторона.
>Где я такое писал? Правильно — нигде
>>он не может работать нормально и конкурировать с айос

>Телефон андроид из ценового сегмента «не топ» неюзабелен в принципе. Можно сколько угодно долго себя обманывать, но это так.
То чем пользуется человек — это его личное дело, и говорить что он себя обманывает это в корне не верно.

>А для ценового сегмента «не топ» — есть бушные айфоны.
б/у != новый

>И опять же — цена не оправдывает, когда разница в цене не порядок, а от силы 2раза.
800 USD и 400 USD — для некоторых уже существенно, а если за 200 USD будет покрывать все что нужно, то это вообще чудно.

>Телефон мог бы работать лучше, но он не работает и все минусы проявляются как раз такие на «не топ» сегменте.
Телефон перестает быть «топ»ом через пол года

>На сам андроид никто не гонит, но факт есть факт — жава — его слабая сторона.
Я не пишу под Андроид однако мне казалось, что Java это прослойка, которая потом конвертируется в Dalvik/Art, а если уж хочется всегда есть NDK.
>>>>он не может работать нормально и конкурировать с айос
И как из этого следует «оказывается телефоны Apple теперь представлены в каждом ценовом сегменте.»? Правильно — никак.

>>То чем пользуется человек — это его личное дело, и говорить что он себя обманывает это в корне не верно.
Это его дело, но при объективном сравнении его выбор проигрывает. И если он с этим не согласен — он себя обманывает. Выбирать по другим критериям(доступность цены, разнообразия и прочее) ему никто не мешает и эпл будет проигрывать там, но опять же — выигрыш в одном не даёт выигрыш в другом.
>>б/у != новый
И что? Не нравится бу? Мне то же не нравится, но такое возможно и никаких проблем нет. Да и можно купить старый новый айпонт.

>>800 USD и 400 USD — для некоторых уже существенно, а если за 200 USD будет покрывать все что нужно, то это вообще чудно.
Из этого ничего не следует. Цена хоть и завышена, но в целом сопоставима с топовыми самсунгами и в 1.5-2 раза ниже с пред/топовыми китайцами.

При сравнении качества цена(+100%) роли не играет, тем более цена тут непричём. Был бы он не жаве — цена была бы идентична.

>>Телефон перестает быть «топ»ом через пол года
Не верно. Топовый телефон — это не пластиковый обмылок и с ним ничего не будет через 2года. Прогресса в железе особого нету и года 2-3 он точно будет в районе этого топа.

И под «топ»ом тут имеется ввиду не топовые попугаи в сравнении со всеми, а уровень производительности необходимый для вменяемой работы.

>>Я не пишу под Андроид однако мне казалось, что Java это прослойка
Какая разница во что там она конвертируется — рантайм на жаве, код на жаве и реализация её ограничена самой жавой как языком. Наличие мемори-модели жавы не даёт её прямиком без кастылей транслировать в натив, динамика на уровне рантайма — туда же. Сама экосистема жабы, сам тип языка не позволяет прикрутить к ней вменяемый компилятор и рантайм.

>>а если уж хочется всегда есть NDK.
И получи всё убожество побочной ветки. Опять же жава там везде торчит. Да и причём тут ндк? Дело в том, что основной язык — жава. Выбранный мною ндк не изменить выбора других. Не изменит выбора гугла.
>На сам андроид никто не гонит, но факт есть факт — жава — его слабая сторона.

а откуда вы взяли этот «факт»? есть какие-то статьи, доказывающие, что вышеназванные проблемы имеются в платформе именно благодаря яве, а не чему-то еще?
>> есть какие-то статьи
Смешно.

>>что вышеназванные проблемы имеются в платформе именно благодаря яве, а не чему-то еще?
Именно проблема в яве, ибо ничего другое данную проблему вызвать не может.

Доказательство — пожалуйста. Любые вменяемые приложения использую жаву по минимуму, да и не использовали бы вообще, если бы не обязывала платформа. Звонит нормально звонилка? Знай — там не жава. Работает нормально игра? Знай там не жава. Телефон не раскаляется до красна? Знай — там не жава.

вопросов больше нет
Ну смотри, хотя это и слив — я помогу тебе всплыть.

Вот я назвал причину — жава. Опустим, что против этого тебе нечего сказать. Давай попроще. Если не жава, то что? Ты говоришь — другие причины — называй их. Если они не разобьются в пыль при первой же моей попытки их оспорить — так уж и быть я поверю в возможность влияния этих причин на андроид.

Ну бушные гэлакси тоже ничего. У меня 4-ка, у отца 3-ка. Покупали еще новыми, кроме батареек ничего не менялось. Полет нормальный, без тормозов. Да и на них железа навалом и надежность на уровне.
  1. Разработка апплетов (applet)


Середина 2016 года, неужели они еще живы?

У Вас есть банковская карта с чипом? Если да, то с большой вероятностью это карта с javacard OS.
То же касается и GSM SIM карт…

Только при чем тут карты? Аплеты запускались в браузере через соответствующий плагин — в том году кто-то говорил что они используются некоторыми банками, но учитывая что npapi уже нет в хроме и (вроде) с марта следующего года не будет в FF...

А ну да… в этом контексте не причем. По диагонали обзор прочитал, сразу преступив к комментариям (что чаще интересней чем обзоры)

Автор как то начал с «Сферы применения Java-технологий» и вдруг как то резко сузил исключительно до WEB технологий.
В корп секторе — сколько угодно. Но в связи с убийством NPAPI в современных браузерах, идет миграция приложения/формы уходят на JNLP, апплеты страницы — в топку.
Что помогло языку Java «войти в каждый дом»

Прежде всего, конечно, асимметрия информации (АИ) на зарождавшемся рынке ИТ. И последовавший вследствие АИ отрицательный отбор технологий по внетехнологическим критериям (бизнеса и потребителей).

У вас на картинке не тот Майк Шеридан; приведённый вами — это датский диджей, родившийся в 1991-м году, и по этой причине вряд ли принимавший участие в Stealth Project, запущенном в декабре 1990-го. Пруф.
То-то я думаю, дико субчик этот смотрится в одном ряду с бородатым труъ-создателем, по глазам аж резануло…
А что бы помогло изгнать Java из каждого дома?

Да вроде оно и так постепенно умирает (кроме android-а разве что), а с того момента как vs и xamarin стали бесплатными, процесс наверняка пошел быстрее.

Да я не о вариациях на эту тему… Сам принцип применения виртуальной машины для бинарного кода. Спрашивается, на кой чёрт была вся эта эволюция вычислительной мощи?

В то время люди разменяли быстродействие нативного кода на приемлимую скорость исполнения кода в VM + полностью управляемое окружение + write once run everywhere. В конце концов, люди не хотели становиться заложниками не особо гибкого окружения в осях, написанных на Си/Си++. Если постмотрите вокруг, то поймёте, что сейчас для этой же цели используются другие средства. Но цель всё та же, ведь уже 60 лет в индустрии "быстро" почти всегда значит "неудобно".

Оси итак написаны на С/С++, а на жаве ни одной. Хотспот так же написана на С/С++.

>>write once run everywhere
Надо понимать, что жава зависит от С++, поэтому С++ появится раньше чем жава. А жава появится через С++.

Непереносимость С/С++ вызвана не языком, а тем фактом, что это языки с доступным лоулевел. Там используются нативные api, там используются всякие таргет-специфик оптимизации, реализации и прочее, чего в жаве по определению нет. Если на С++ писать как на жаве — запускаться будет так же везде, вернее даже на большем числе целей, чем жава.

Переносимость — это не плюс жавы, не плюс её реализации, а плюс самого подхода(поставлять код в обобщенном представлении и собирать на таргете), но в С/С++ опенсорс мире это итак происходит — код можно взять и где угодно собрать.

Опять же в мире С/С++ уже есть реализация вм(правда времени компиляции, ибо не для жавы) сильнее жавы — это ллвм. Любой код можно точно так же собирать в байткод, оптимизировать(этого жава не умеет), а потом транслировать любым бекендом.

Все плюсы жавы как платформы — это плюсы С/С++ рантайма, ибо вм работает на уровне юзерпейса. Их можно использовать в любой С/С++ программе без вм.

У жавы осталась только динамика, но она мало кому нужна в том виде, что она есть в жаве. У С++ же есть мощные статические средства + средние динамические. У жавы статических нет вообще, кроме генериков.

>>Но цель всё та же, ведь уже 60 лет в индустрии «быстро» почти всегда значит «неудобно».
Не верно — быстро — значит квалификация уровня матчасти. «неудобно» — это очередное мифотворчество. Обычный ваятель всегда путает реализацию и интерфейс. Пользователя не должно волновать как реализовано 2 + 2 — интерфейс не меняется. Точно же и везде.

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

Уровень «быстро» ещё выше — это уже понимание на уровне интерфейсов, но не это проблема жавы.

Ключевая фраза моего поста 'в то время', там не было ллвм и прочего, может вы забыли? Пацаны писали jvm на ужасном Си квалифицированно, чтобы не позорить профессию, а нормальные люди писали для бизнеса продукты, не тратя деньги и время на фаллометрию с единственно правильными программистами на неудобных языках.

>>Ключевая фраза моего поста 'в то время'
Жава появилась в районе перед нулевыми. В начале нулевых появилась ллвм.

>>Пацаны писали jvm на ужасном Си квалифицированно, чтобы не позорить профессию
Пацаны писал на том, на чём можно написать.
>>а нормальные люди писали для бизнеса продукты
Из этого ничего не следует. Жаве дал буст сам в корпоративном секторе пропихивая её, корпаративному сектору выгоден сильный вендор с поддержкой и «заботой», чего альтернативны не имели, да и альтернатив особо и не было.

А нормальные люди да — хренак-хренак и в продакшн — главное чтобы бабки платили, а тем кто платит — главное чтобы хоть что-то работало без заморочек.

Для бизнеса так же и на пхп писали, только это не делает пхп чем-то особенным — просто не было альтернативы.

>>не тратя деньги и время на фаллометрию с единственно правильными программистами на неудобных языках.
Да, писать надо много, а на квалификацию у многих нет ни денег, ни времени, ни способностей. Не всем же строить комбайны — кому-то надо на них комбайнёрить. Только вот без комбайнёров мир проживёт(любой это может делать и создать новых проблем никаких нет), а без тех, кто эти комбайны создаёт уже не обойтись. Комбайнёры могут сколь угодно долго кричать, кичиться тем, что инженерия и «сложность» — это фаллометрия и что весь колхоз и прочий бизнес на них держиться, как и земля русская, только что же из этого?

«не удобность» — это миф и враньё обоснований которому нет. Любой другой язык не менее удобен нежели жава. Чем неудобен С++, если писать на нём как на жаве прикрутив ГЦ? В какой-нибудь свивф, го? Никаких проблем.

Рынок всё разрулил, что Вам не нравится?
И это мы пока обсуждаем java, сравниваем её недостатки с достоинствами C++, что не совсем честно. Само проникновение странного языка С/C++ в индустрию это ещё один пример асимметрии информации на рынке.
ПХП кстати в своё время продвинул индустрию вперёд, но его время уходит потихоньку.
Вообще, вы какой-то токсичный, хоть, наверное, и являетесь очень умным плюсовиком, вас что-то уязвило чтоли? Любите самоутвердиться, рассуждая о тупых комбайнёрах?

Рынок всё разрулил, что Вам не нравится?

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

Само проникновение странного языка С/C++ в индустрию это ещё один пример асимметрии информации на рынке.

Ничего странного нету. С/С++ — это смесь множества языков. Сишный диалект из С++ сам по себе, современный С++, сишный диалект из С++ с классами ака сфронт и прочее.

Альтернативы ему нет и не будет. Си с рынка не уходил никогда и как был топ1 так и остался. Собственно как и кресты — они всегда были там, где качество кода оценивается по критериям чуть шире, чем хоть как-то работает/не работает, как это происходит в мире жавы и прочих подобных языков.

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

>>являетесь очень умным плюсовиком, вас что-то уязвило чтоли?
Я являюсь хейтером С++ в той же степени в которой являюсь хейтером жавы. В той же степени в которой являюсь хейтером эпла. Но в отличии от вас я не строю свою аргументацию, либо мнение о чём-то на основании «нравится/не нравится». Как бы мне С++ не нравился — ему альтернативы нет.

>>рассуждая о тупых комбайнёрах?
Опять же — тупыми их назвали вы, а не я. Я привёл аналогию, которая полностью описывает ситуацию. Очередная ваша проблема заключается в том, что вы не понимаете — самоутверждение — это не только возвышение себя выше других, что вы приписываете мне. Самоутверждение это так же — приписывание себя того, чем вы не являетесь, даже если делать это до уровня «я как все», а не только «я выше».

А почему я пишу в таком стиле — всё просто — люди не могут мне оппонировать в рамках дискуссии технической и приходятся сраться на уровне доступном всем.

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

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

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

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

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

>>Ой, простите, выше Вы что-то курлыкали про дискуссию, а теперь про какие-то сливы, идиотизм и прочую фаллометрию.
Действительно. У нас есть факт, как амёбка начала мне кукарекать про рынок, жабка, кресты и прочее. После моего ответа, где я разобрал «рынок, жабку, крестовиков и прочее» данная амёбка обделалась, ничего не ответила и начала нести херню.

Слился? Да.

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

Ещё раз — потуги про голубя и прочие отмазоны котируются в районе твоей парты, с соседями по парте. Нахрена ты мне сюда постишь эти потуги уровня детсада?

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


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

Да, да, да. Смешно-смешно. 2016 и прочие мемчики школоты, но балабол пытается из себя что-то строить.

Ещё раз — мог бы ты что-то — ты бы не обделался, а не мог бы я больше тебя — я бы не победил. Всё просто.

>>Ваших комментариев не имеет никакой ценности в ситуации спора вне Вашей собственной головы — это очень печально.
Пока ты этого не доказал — твои потуги ничего не стоя, опять же — мой коммент — это ответ на твои потуги. А коли после моего ответа ответа от тебя по теме не последовало, а не по теме последовало — вывод один — ответить нечего, либо обделался/слился.

>>И, внезапно, если вы курлыкнули немного бреда, то оппонент вообще не обязан поддаваться приступу оверквотинга и разбирать каждую Вашу «ценную мысль».
Опять потуги убогие. Я могу тебя спросить за бред и ты обделаешься, как ты обделался по-теме, но зачем. Ты предпринял попытку спорить и ты пытался до определённого момента, если бы всё реально было так как ты сказал — ты бы написал это сразу, а не тогда, когда тебя загнали в угол. Либо хотя-бы ответил по теме, а потом начал кукарекать.

В конечном итоге всё просто — обделался, начал нести херню. Обосрался и здесь. Теперь уже пошли совсем детсадовские отмазки «я не обязан отвечать» — ты обязан — ты начал, тебя никто не заставлял. Начал спорить и съехал — проиграл.

>>Иногда случается даже так, что Ваш коммент представляет собой пустую трату байтов, вне зависимости от того, что там думают Ваш внутренний судья (он же прокурор).
Опять лсный балабол пытается себя приписать к байтам, да и вообще к теме. Смешно.

Споря с тобою — я не думаю — в этом нет смысла. Вернее как — я пытаюсь писать сдержано, дабы не ты не пошел доносить на меня. Хотя именно это ты и пытаешься сделать.

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

Попытайся хоть что-то высрать мне по-теме.
UFO just landed and posted this here
«Java умирает» очень похоже на «Запад загнивает» времён СССР.
Я не совсем уверен в смерти языка — который является самым полулярным в университетах и различных курсах.
Люди стартуют именно с java в большинстве случаев.

Популярность в "университетах и различных курсах" вообще ничего не значит (+оно отстаёт от рынка на несколько лет), в реальности нужно совсем другое (имхо .net сейчас гораздо перспективнее).

Не холивара ради, я совсем не осведомлён в этом плане (профессиональным разработчиком вообще не являюсь), и потому мой комментарий может основываться на неверных данных
Java же вроде годится и для разработки серверных приложений. Можно ли .NET без заморочек запустить на сервере под управлением чего-то кроме Windows Server? Ведь вроде как на серверах сейчас в большинстве случаев стоят UNIX-like операционные системы. Или Windows Server сейчас достаточно дешёвый, чтобы ставить именно его?
На счёт серверных приложений не на Java или .NET, они разве не являются менее производительными?
То есть причин для «смерти» Java по крайней мере в этом секторе я совсем не вижу, и хотелось бы понять, почему это может произойти.
Хм, что ж. Действительно. Спасибо, не знал
P.S. О, там даже предоставляется наглядная инструкция по установке на различные ОС. Вообще супер.
А, да, ещё один вопрос тогда. Как обстоят у .NET дела с совместимостью между версиями? Ведь это же вроде тоже важный момент
Просто помнится мне один неприятный момент, правда, связан не с .NET, а с Visual C++ Community Edition, что проект, созданный в VS 2013 не открывался в VS 2015.
К тому же, пользовался несколькими приложениями, написанными на Visual C++, и каждый установщик таких приложений тащил на себе нужную только ему версию MSVC++ (например, «Microsoft Visual C++ 2008 Redistributable — x86 9.0.30729.17», а в другом приложении то же самое, только не 17, а 4974)
То, что на сайте загрузки .NET (https://www.microsoft.com/net/download) есть разные версии, наводит на мысли, что приложение, созданное, допустим, с .NET 3.5 SP1 не запустится на .NET 4.6.1
А, да, ещё один вопрос тогда. Как обстоят у .NET дела с совместимостью между версиями?

Нормально.


наводит на мысли, что приложение, созданное, допустим, с .NET 3.5 SP1 не запустится на .NET 4.6.1

Не запустится. Нужно будет доставить 3.5 (они живут side by side).

Вот то, что между разными major-версиями (в указанном случае — 3.5 SP1 и 4.6.1) нет совместимости, печально. Впрочем, с учётом того, что всё же .NET живёт и процветает, это не является серьёзной проблемой, ведь так?

Это вообще не является проблемой, вы просто приносите дистрибутив с собой. Между предыдущими версиями (1-3) совместимость была, и это привело к тому, что дистрибутив разросся до невозможности.

Просто мне казалось, что дистрибутив тоже порядком места занимает. По крайней мере в сравнении с небольшими приложениями. Т.е. из прикладных программ, которые могу сейчас вспомнить — PascalABC.NET, где полный дистрибутив — 66 мегабайт, а без .NET — 8 мегабайт.
Впрочем, ещё остаётся у меня вопрос, а именно: не возникает ли проблема, что пользователь может попытаться запустить программу разными версиями .NET? Или в исполняемом файле прописана версия, на которой он должен запускаться, а виртуальная машина подбирается автоматически?

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

Есть нюансы. Скажем, на Win 10 и на каком-то сервере, на который я недавно смотрел .net 3.5 просто идет из коробки, но по умолчанию выключен. Включаете фичу — приложение запускается. Если это не ваш случай — включете в инсталлятор ссылку на скачивание (и только если локально нет). И вот только если вы параноик, вы реально тащите за собой дистрибутив. Другое дело, что банально зачем сейчас писать приложение под 3.5?


Или в исполняемом файле прописана версия, на которой он должен запускаться, а виртуальная машина подбирается автоматически?

Там прописаны зависимости, поэтому да, версия будет выбрана автоматически.

Другое дело, что банально зачем сейчас писать приложение под 3.5?
Сейчас, наверное, незачем. Но ведь наверняка найдутся приложения, которые написаны когда-то давно, и уже больше не поддерживаются, но при этом захотелось воспользоваться без переписывания кода/перекомпиляции. Собственно, я это имел ввиду.

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

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

Что ж, хорошо если так.

Кстати, есть один момент, который в .NET для меня всё ещё остаётся аргументом против создания приложений на новых версиях, хотя и почти незначимым — это отсутствие официальной поддержки старых ОС в новых версиях .NET.
Приведу конкретный пример: у меня стоит Windows Vista SP1, официально .NET 4.5.1 не поддерживается. Поставить SP2 по какой-то неизвестной мне причине не удалось (увы, почему сорвалось обновление виста не сообщает), соответственно, последняя доступная мне версия — .NET 4.0.

Впрочем, это исключительно моя личная проблема, которая не проявит себя у подавляющего большинства людей, у которых почти наверняка стоят актуальные версии ОС.
К слову сказать, старые ОС не поддерживает не только Microsoft .NET, но также Google Chrome, Python 3 (из того, что я могу сейчас вспомнить), наверняка ещё что-нибудь широко известное.
На самом деле, я могу себе представить, насколько сложно поддерживать разные версии софта, так что «камнем в сторону Microsoft» (или кого-либо ещё) это не является.

Тут дело традиционное: хотите новых фич — рано или поздно вам понадобится новая ОС. Делать внутри BCL разные ветки кода под разные ОС — дорого (и очень дорого).


А конкретно взятая Vista, насколько я знаю, вообще уже не поддерживается, так что нет ничего удивительного в том, что под нее нет нового софта.

Да, это всё, безусловно, верно. Рано или поздно новая ОС понадобится.
А на счёт Vista — тут, насколько я знаю, есть ещё и огромное количество багов. Например, периодически процесс explorer.exe начинает кушать весь CPU (в отсутствие каких-либо действий с моей стороны вообще), в результате чего приходится его убивать и запускать заново. Ну и уже упомянутый мной баг с невозможностью обновления.
Хотя, официально поддержка продолжится до 11 апреля 2017 (поправьте, если взят неверный источник), я всё же рассчитываю раньше обновить железо и софт.
Собственно, в принципе, сижу с Vista только потому, что умудрился сжечь основной ноут, так бы, безусловно, этот комп так и пролежал на полке в кладовке.
Так вроде бы в этом весь смысл мажорной версии — её увеличивают только когда меняется обратная совместимость.
Что ж, да, конечно. Это я не учёл. Просто в той же Java major-версия вроде как до сих пор не изменилась (если посмотреть, то свежая JVM имеет версию 1.8*). Хотя, не знаю, возможно, что несовместимые изменения API и происходили.
Да, в Java обратную совместимость не нарушали никогда (если конечно не завязывать на недокументированный функционал, типа способа работы String.intern или Unsafe). Поэтому мажорная версия там единичка.
Хорошо это или плохо — спорный вопрос. С одной стороны круто, что код написанный в бородатые времена на Java 1.0 будет работать до сих пор.

А с другой стороны стороны в Java из-за этого висит куча классов с невменяемым API. Например я для всех своих проектов тяну сторонние библиотеки для логирования и парсинга XML, хотя формально все это есть в стандартной библиотеке.

И опять таки, все это относится исключительно к JavaSE. В JavaEE обратную совместимость нарушается, но что-то я не видел чтобы кто-то жаловался что EJB 2.0 не поддерживаются в Java EE 7.
Ну, это я просто к тому, что когда-то давно мне казалось, что обратная совместимость между версиями — нечто само собой разумеющееся (именно из-за Java), и я был тогда очень удивлён, что между теми же Microsoft Visual C++ Runtime (который, собственно, всегда висел у меня в системе в нескольких инкарнациях, просто обратил на это внимание я значительно позже) этой самой обратной совместимости нет.
Сейчас же я не особо удивлён тому, что нет совместимости между версиями .NET

На счёт XML, да, посмотрел я на пример использования. Действительно, имело смысл сделать несколько проще. Правда, не совсем вижу причины использования сейчас (когда есть более удобные форматы, например JSON) именно XML (за исключением HTML и программ, где XML использовался до появления более удобных форматов). Можете пример задачи, где использование XML является самым удобным решением?
Практически любой документ со сложной структурой, который есть необходимость править руками. Например конфиги или дескрипторы развертывания. За счет наличия XSD схемы XML легко проверить на валидность. За счет той же XSD во многих IDE работает автодополнение. По XSD можно даже автоматом сгенерить объектную модель.

Если требуется обработка больших объемов XML, то на помощь приходит XSLT и XQuery.

А еще в json нет неймспейсов.

Если же работать с документом как с DOM деревом или мапить его на объекты, то разницы между форматами по сути и нет — все равно всё спрятано за библиотеками.

А насчет HTML:
А вы взгляните на reactjs — там есть virtual dom, который как раз представляет html в виде json. Просто сравните:
<p class="lead">
   <span>A JavaScript library for building user interfaces </span>
   <a href="http://facebook.github.io/react/">React</a>
</p>

и
{
  tag: 'p',
  attrs: {className: {'lead': true}},
  children: [
    {
      tag: 'span',
      children: 'A JavaScript library for building user interfaces '
    },
    {
      tag: 'a',
      attrs: {href: 'http://facebook.github.io/react/'},
      children: 'React'
    }
  ]
}
Хм, да, что ж. Действительно, я почему-то не подумал про весьма основные элементы XML — имена тегов и их атрибуты.
Спасибо, буду знать.
Да, в Java обратную совместимость не нарушали никогда (если конечно не завязывать на недокументированный функционал, типа способа работы String.intern или Unsafe).

Ну, все-таки, это не совсем правда.

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

Обо что спотыкался я сам:


  1. Обратная совместимость исходников — в 5ке добавили ключевое слово enum. Все "Enumeration enum = ..." перестали компилироваться.
  2. В 8ке метод ConcurrentHashMap.keySet() в сигнатуре поменял возвращаемое значение с java.util.Set на java.util.concurrent.KeySetView — на уровне сорцов все хорошо, но бинарной совместимости нет.

В принципе, это мелочи, первое лечится через grep/sed, второе простой перекомпиляцией. Но факт остается фактом — обратная совместимость таки ломалась.

Ну и как "индекс, оценивающий популярность языков программирования, на основе подсчета результатов поисковых запросов вида +" programming" коррелирует с нужностью языка? А насчет гитхаба тоже не все так просто: java там представлена тем же eclipse и прочими большими проектами, а проектов на c# (хотя .net это не только c#) там вроде никогда особо не было. Да и со стороны посмотрите на то как развивается java (очень медленно) и .net (быстро), так что будущем неизвестно что будет (но лично я ставлю на .net).

Прямой корреляции нет, но косвенно, по количеству запросов, можно судить о востребованности языка. Статистика по гитхаб определят больше популярность языка в opensource. И ещё, в статистике не объём репозиториев, а их количество (поэтому на 1-м месте javascript с кучей мелких репозиториев), т.е. объём eclipse не играет роли. Действительно, репозиториев на c# возможно мало из-за того, что он не популярен в opensource. У c# и экосистемы .net узкая ниша разработки под платформы на базе windows (я знаю про mono), которая сейчас не так популярна, как в 2000-х.
Про развитие языка, я согласен с тем, что java по количеству вносимых фич давно отстала от c#, в этом есть как плюсы так и минусы. Тем кому нужны фичи и новые возможности мигрируют на другие языки, не меняя платформу jvm — scala, clojure, groovy.
С# я практически не знаю, но мне кажется по богатству возможностей scala его опережает. Тем не менее scala не так уж и популярна из-за своей сложности (высокий порог входа для новичков), т.е. простота языка java это в какой-то мере плюс.
У c# и экосистемы .net узкая ниша разработки под платформы на базе windows

Так и было когда-то, но последние пару лет ms очень активно вкладывается в opensource (почти весь .net по сути выложили), а уж как они меня (и скорее всего не только меня) удивили когда сделали бесплатной сначала visual studio pro (в т.ч. и для коммерческой разработки), а потом и купленный совсем недавно xamarin… Поэтому имхо java придется как минимум потесниться.

Да, похоже что 2014. Но количество проектов на java на конец 2014 в 4 раза больше чем c#, не думаю что за два года пропорции существенно изменились.
«Сферы применения Java-технологий
...»

6. Разработка Xlet
Скучная статья.

Было всё веселее.

Жил был один инженер которому поручили разработать ПО для пульта телевизора. Писал код он на С.
Дело было новое и железо ему приносила часто новое и разное.
И запарился он иметь зоопарк своих программ на С под разное железо для пульта.

Пришёл он однажды к своему руководству с заявлением на увольнение.
Руководство его формально спросило — причина увольнения?
— Да, запарился я с вашим изменением железа, — сказал он. — Мне приходится по пол-программы переписывать, — приврал он маленько.
В это время у руководство чего-то сидел Гослинг — который обычно ездил по универам на конференции и слушал о новинках в разработке ПО.

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

Вот Гослинг и сказал инженеру по пультам — Не увольняйся пока, я тут новую штуку придумал — пишешь один раз, выполняется во всех пультах для телевизора.


Язык назвали Oak — что на жаргоне означало коньяк.
Но когда дело дошло до маркетологов, те сказали, не гоже программистам пить алкоголь.
Стали выбирать: чай, молоко, пиво, вино, виски, сок, шампанское и сидр. Остановились на кофе — на жаргоне это Java.

(Кстати, когда Java уже взлетело, то пришедшему программисту со своим простым языком для обработки нажатий на странице, маркетологи сразу же сказали, что язык его будет называться JavaScript и надо также добавить оператор new.
Но зачем, спросил программист, — у меня же нет ООП.
Неважно, добавь, — сказали ему маркетологи. — За пару недель уложишься?)

И наступил 1995 год и Java взлетел — шума было много. Почти как C, но реализация ООП проще чем у С++.

Про то, что Java был придуман как язык для написания ПО для встроенных систем типа пульта телевизора, сразу же забыли ибо наступили годы Интернета. — Что то надо было приспособить для рисования картинок в броузере. И для этого привлекли Java.

Если бы в 1995 году кто-то сказал, что Java станет (займёт место Кобола) языком для Энтерпрайз систем — его бы в дурку послали.

Вывод: Неисповедимы пути Господне. (С)

Даже преподносимая сейчас в качестве главной инновации Java идея не зависящих от платформы мобильных программ в сочетании с генерацией кода в процессе выполнения еще раньше появилась в ETH. Выполненная под руководством Вирта диссертация автора этих строк [Франц 94] посвящена описанию динамически расширяемой системы, в которой исполняемый объектный код «на лету» порождается из промежуточного машинно-независимого формата. В этой диссертации, опубликованной на английском языке в феврале 1994 г., т. е. более чем за год до самой первой презентации Java, уже появляется слово applet и описывается ряд сценариев, весьма сходных с существующими сегодня на Java. В настоящее время автор работает над дальнейшим развитием своей системы, обладающей несколькими преимуществами по сравнению с Java [Франц-Кистлер]. В связи с этим может быть интересно то обстоятельство, что в марте 1994 г. автором был прочитан в Калифорнии ряд докладов по теме диссертации, причем один из них — в Sun Laboratories, Inc. Кроме того, упомянутый выше Билл Джой, который переориентировал проект Java на WWW, стал одним из первых обладателей лицензии на Оберон-систему ETH, и в конце 1994 — начале 1995 г. он неоднократно связывался с ETH; в процессе контактов выяснилось, что он читал мою диссертацию.


Такие вот разборки были.
Никак не могу найти «ветку» Java-интерпретатора под линейку машин PDP-11 от d|i|g|i|t|a|l.
Может кто-то слышал, была ли подобная разработка.
Несколько лет назад я натыкался на исследовательский проект, но там были только тезисы и диссертация, сам проект был недоступен, на письмо автор ответил, обещал предоставить код, но потом куда-то пропал. А потом и у меня интерес пропал.
В качестве профессора американского университета я должен приветствовать Java уже по той причине, что этот язык позволяет безболезненно отказаться в преподавании от дидактически несостоятельных Си и Си++. Java представляет собой приемлемый компромисс: современный язык программирования, разработанный в традиции, близкой к Паскалю, Модуле-2 и Оберону, но с сознательной попыткой замаскировать это синтаксисом, сходным с синтаксисом Си. В качестве практика я, таким образом, приветствую язык Java везде, куда он планомерно входит как альтернатива Си или Си++. Однако те, кто уже обрел столь же мощный, но эстетически более совершенный язык программирования, такой как Оберон или Ада-95, спокойно могут держаться за него, не боясь оказаться в невыгодной «языковой ситуации».


Профессор оказался не совсем прав с Оберон и Ада-95.
>>Java
>>альтернатива Си или Си++
>>Java
>>альтернатива
Спасибо — посмеялся.

>>Паскалю
>>такой как Оберон или Ада-95, спокойно могут держаться за него, не боясь оказаться в невыгодной «языковой ситуации».
Вся квалификация в одном предложении. Вернее её отсутствие. Мне жаль тех, кто ему поверил. Они оказались на задворках.

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

А по поводу «почему жава» — ну во-первых жава требует намного более низкой квалификации от данного «профессора» и шансы у оного осилить тот же С++ равны нулю, а уж про реальный си я даже заикаться не буду. Учить проще. Проверять проще. Но это всё не важно.

Основная причина — все эти вузы в сша сидят на грантах больших корпораций. Кто стоял за C/С++? К тому моменту дохлая Bell labs? А кто пропихивал жабку? Сан + корпоротивный сектор, который был опутан связями с сан и прочими вендорами, которые требовались новые адепты. Естественно С++ их не интересовал как излишне сложный и никакой в тот момент, хотя дава была ещё более никакая, но всяко лучше С++.

То же самое твориться и в вузах рашки(в центральной не так сильно), а вот на периферии и снг — во все поля — все под майкрасофтом как и этот ресурс. И точно так же «сишарпик наше всё, маздайка — наше всё и С/С++ не язык».

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

http://www.tiobe.com/tiobe_index — языковый рейтинг по количеству квалифицированных инженеров, курсов и ранжированию в поисковых системах. Пока Java лидирует.

Мне интересно кто такой «Семен Гринштейн». Вас сколько? Постоянно с нулевыми публикациями — и тут такой выстрел. И на фотке «Sun + Oracle» видно, кого дернули за яйца и кому по**й.
Sign up to leave a comment.

Articles