Comments 97
ощущение, что язык тебе помогает, а не мешает.А с C# оно, по-вашему, более или менее выражено?
Я понимаю, что это с какой-то стороны мелочи, и это дело привычки, и IDE покажет тип обьекта. Но именно строгость и прямолинейность Java в этих вопросах (ах, программист, хочешь удобную работу с Map — окей, держи — map.put(«key», value"), value = map.get(«key»)) мне нравится. Мне нравится, что в большинстве случаев мне не нужно задумываться про то, что я пишу — я лишь переношу мысли с головы в код. Из C# у меня такого ощущения не возникало.
Опять-таки, я осознаю, что это очень субьективное мнение. Возможно, если бы я еще год-два писал на C#, я бы изменил свою точку зрения.
P.S. А еще в Java шикарнейшие enum.
то запись вида a[4] уже однозначно нельзя трактовать — a это массив или Dict?
А это зачем-то надо однозначно трактовать?
UPD: Еще момент — приходится удерживать в памяти лишнюю сущность — знание, что из нескольких вариантов типов «а» является каким-то конкретным типом. Учитывая, что кратковременная память способна удерживать не так уж и много, разумно предположить, что лучше максимально освобождать ее на другие задачи.
Как по мне, лучше пусть язык не заставляет над таким задумываться. В какой-то мере это напоминает ситуацию из JavaScript — там вообще можно что угодно делать, но народ потихоньку пытается отходить на что-то более строгое — TypeScript, CoffeScript.
Если я вижу запись вида a[4] = 5, здесь есть два варианта: Dict или массив.
Намного больше, на самом деле.
1) что же такое «a» (какую роль играет эта переменная)
Это должно быть очевидно из названия.
2) Какой тип этой переменной.
Зачем вам эта информация?
В зависимости от типа эта переменная может играть разную роль.
Это плохой дизайн (до тех пор, пока вы не делаете полностью type-based programming). Семантика переменной должна определяться по ее названию, а не по типу (и уж точно не по тому, какой тип коллекции использован для переменной).
Это должно быть очевидно из названия.
Семантика переменной должна определяться по ее названию, а не по типу (и уж точно не по тому, какой тип коллекции использован для переменной).
Я с вами абсолютно согласен. Но здесь такой момент, что далеко не все программисты обладают достаточной квалификацией (а иногда и желанием) писать такой хороший код. И часто так бывает, что переменным присваивают неподходящие имена. Тогда хотя бы знание типа помогает разобрать такой код. Такой код встречается у многих проектах — например, я использую популярный движок libGDX — он opensource, поэтому я часто заглядываю в кишки, посмотреть как и что делается. Так там много чего попадается, что не попадает под определение «хороший код». Где-то красоту приносят в жертву оптимизации. В общем, надеяться на то, что в переменных всегда будут правильные имена нельзя :)
В общем, надеяться на то, что в переменных всегда будут правильные имена нельзя
Тогда нельзя и надеяться, что у переменной правильный тип, поэтому ваша логика все равно неприменима. И да, никакая оптимизация не может оправдать плохое именование.
На самом деле, это очередная вариация дискуссии var
vs explicit typename, и Липперт давно все сказал по этому поводу.
никакая оптимизация не может оправдать плохое именование.
Иногда, из-за необходимости в оптимизации в коде теряется контекст решаемой задачи. Отсюда и получаются такие проблемы, когда разработчику сложно подобрать удачное именование той или иной переменной, чтобы было понятно для других, зачем она здесь :)
Ах да, я ненавижу эпл и за андроид(правда без жабки, но и сейчас за андроид несмотря на жабку). Но моя неприязнь к эплу всё же не позволяет спорить с объективной реальностью в которой андроид не конкурент эплу.
А для ценового сегмента «не топ» — есть бушные айфоны. И опять же — цена не оправдывает, когда разница в цене не порядок, а от силы 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.
И получи всё убожество побочной ветки. Опять же жава там везде торчит. Да и причём тут ндк? Дело в том, что основной язык — жава. Выбранный мною ндк не изменить выбора других. Не изменит выбора гугла.
а откуда вы взяли этот «факт»? есть какие-то статьи, доказывающие, что вышеназванные проблемы имеются в платформе именно благодаря яве, а не чему-то еще?
Смешно.
>>что вышеназванные проблемы имеются в платформе именно благодаря яве, а не чему-то еще?
Именно проблема в яве, ибо ничего другое данную проблему вызвать не может.
Доказательство — пожалуйста. Любые вменяемые приложения использую жаву по минимуму, да и не использовали бы вообще, если бы не обязывала платформа. Звонит нормально звонилка? Знай — там не жава. Работает нормально игра? Знай там не жава. Телефон не раскаляется до красна? Знай — там не жава.
Вот я назвал причину — жава. Опустим, что против этого тебе нечего сказать. Давай попроще. Если не жава, то что? Ты говоришь — другие причины — называй их. Если они не разобьются в пыль при первой же моей попытки их оспорить — так уж и быть я поверю в возможность влияния этих причин на андроид.
- Разработка апплетов (applet)
Середина 2016 года, неужели они еще живы?
То же касается и GSM SIM карт…
Только при чем тут карты? Аплеты запускались в браузере через соответствующий плагин — в том году кто-то говорил что они используются некоторыми банками, но учитывая что npapi уже нет в хроме и (вроде) с марта следующего года не будет в FF...
Что помогло языку 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-м до Вас ещё не дошло, что Ваше личное мнение о содержимом Ваших комментариев не имеет никакой ценности в ситуации спора вне Вашей собственной головы — это очень печально.
И, внезапно, если вы курлыкнули немного бреда, то оппонент вообще не обязан поддаваться приступу оверквотинга и разбирать каждую Вашу "ценную мысль". Иногда случается даже так, что Ваш коммент представляет собой пустую трату байтов, вне зависимости от того, что там думают Ваш внутренний судья (он же прокурор).
Ещё раз — мог бы ты что-то — ты бы не обделался, а не мог бы я больше тебя — я бы не победил. Всё просто.
>>Ваших комментариев не имеет никакой ценности в ситуации спора вне Вашей собственной головы — это очень печально.
Пока ты этого не доказал — твои потуги ничего не стоя, опять же — мой коммент — это ответ на твои потуги. А коли после моего ответа ответа от тебя по теме не последовало, а не по теме последовало — вывод один — ответить нечего, либо обделался/слился.
>>И, внезапно, если вы курлыкнули немного бреда, то оппонент вообще не обязан поддаваться приступу оверквотинга и разбирать каждую Вашу «ценную мысль».
Опять потуги убогие. Я могу тебя спросить за бред и ты обделаешься, как ты обделался по-теме, но зачем. Ты предпринял попытку спорить и ты пытался до определённого момента, если бы всё реально было так как ты сказал — ты бы написал это сразу, а не тогда, когда тебя загнали в угол. Либо хотя-бы ответил по теме, а потом начал кукарекать.
В конечном итоге всё просто — обделался, начал нести херню. Обосрался и здесь. Теперь уже пошли совсем детсадовские отмазки «я не обязан отвечать» — ты обязан — ты начал, тебя никто не заставлял. Начал спорить и съехал — проиграл.
>>Иногда случается даже так, что Ваш коммент представляет собой пустую трату байтов, вне зависимости от того, что там думают Ваш внутренний судья (он же прокурор).
Опять лсный балабол пытается себя приписать к байтам, да и вообще к теме. Смешно.
Споря с тобою — я не думаю — в этом нет смысла. Вернее как — я пытаюсь писать сдержано, дабы не ты не пошел доносить на меня. Хотя именно это ты и пытаешься сделать.
Как я уже сказал — очередная малоразвитая амёбка что-то строит из себя пытаясь взывать к публики таких же амёбок. При этом итак ясно кто победитель и почему. Каждый день по десять штук таких в спорах со мною обеделываются и их потуги ничего нового для меня не представляют, ибо все как под копирку один в один. Хотя все вылезли из одной парты и действуют по одной агитке.
Попытайся хоть что-то высрать мне по-теме.
Я не совсем уверен в смерти языка — который является самым полулярным в университетах и различных курсах.
Люди стартуют именно с java в большинстве случаев.
Популярность в "университетах и различных курсах" вообще ничего не значит (+оно отстаёт от рынка на несколько лет), в реальности нужно совсем другое (имхо .net сейчас гораздо перспективнее).
Java же вроде годится и для разработки серверных приложений. Можно ли .NET без заморочек запустить на сервере под управлением чего-то кроме Windows Server? Ведь вроде как на серверах сейчас в большинстве случаев стоят UNIX-like операционные системы. Или Windows Server сейчас достаточно дешёвый, чтобы ставить именно его?
На счёт серверных приложений не на Java или .NET, они разве не являются менее производительными?
То есть причин для «смерти» Java по крайней мере в этом секторе я совсем не вижу, и хотелось бы понять, почему это может произойти.
Аsp.net вроде везде работает https://www.microsoft.com/net/core
P.S. О, там даже предоставляется наглядная инструкция по установке на различные ОС. Вообще супер.
Просто помнится мне один неприятный момент, правда, связан не с .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).
Это вообще не является проблемой, вы просто приносите дистрибутив с собой. Между предыдущими версиями (1-3) совместимость была, и это привело к тому, что дистрибутив разросся до невозможности.
Впрочем, ещё остаётся у меня вопрос, а именно: не возникает ли проблема, что пользователь может попытаться запустить программу разными версиями .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 1.0 будет работать до сих пор.
А с другой стороны стороны в Java из-за этого висит куча классов с невменяемым API. Например я для всех своих проектов тяну сторонние библиотеки для логирования и парсинга XML, хотя формально все это есть в стандартной библиотеке.
И опять таки, все это относится исключительно к JavaSE. В JavaEE обратную совместимость нарушается, но что-то я не видел чтобы кто-то жаловался что EJB 2.0 не поддерживаются в Java EE 7.
Сейчас же я не особо удивлён тому, что нет совместимости между версиями .NET
На счёт XML, да, посмотрел я на пример использования. Действительно, имело смысл сделать несколько проще. Правда, не совсем вижу причины использования сейчас (когда есть более удобные форматы, например JSON) именно XML (за исключением HTML и программ, где XML использовался до появления более удобных форматов). Можете пример задачи, где использование XML является самым удобным решением?
Если требуется обработка больших объемов 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'
}
]
}
Да, в Java обратную совместимость не нарушали никогда (если конечно не завязывать на недокументированный функционал, типа способа работы String.intern или Unsafe).
Ну, все-таки, это не совсем правда.
Обо что спотыкался я сам:
- Обратная совместимость исходников — в 5ке добавили ключевое слово enum. Все "Enumeration enum = ..." перестали компилироваться.
- В 8ке метод ConcurrentHashMap.keySet() в сигнатуре поменял возвращаемое значение с java.util.Set на java.util.concurrent.KeySetView — на уровне сорцов все хорошо, но бинарной совместимости нет.
В принципе, это мелочи, первое лечится через grep/sed, второе простой перекомпиляцией. Но факт остается фактом — обратная совместимость таки ломалась.
Ну и как "индекс, оценивающий популярность языков программирования, на основе подсчета результатов поисковых запросов вида +" programming" коррелирует с нужностью языка? А насчет гитхаба тоже не все так просто: java там представлена тем же eclipse и прочими большими проектами, а проектов на c# (хотя .net это не только c#) там вроде никогда особо не было. Да и со стороны посмотрите на то как развивается java (очень медленно) и .net (быстро), так что будущем неизвестно что будет (но лично я ставлю на .net).
Про развитие языка, я согласен с тем, что java по количеству вносимых фич давно отстала от c#, в этом есть как плюсы так и минусы. Тем кому нужны фичи и новые возможности мигрируют на другие языки, не меняя платформу jvm — scala, clojure, groovy.
С# я практически не знаю, но мне кажется по богатству возможностей scala его опережает. Тем не менее scala не так уж и популярна из-за своей сложности (высокий порог входа для новичков), т.е. простота языка java это в какой-то мере плюс.
У c# и экосистемы .net узкая ниша разработки под платформы на базе windows
Так и было когда-то, но последние пару лет ms очень активно вкладывается в opensource (почти весь .net по сути выложили), а уж как они меня (и скорее всего не только меня) удивили когда сделали бесплатной сначала visual studio pro (в т.ч. и для коммерческой разработки), а потом и купленный совсем недавно xamarin… Поэтому имхо 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 уже по той причине, что этот язык позволяет безболезненно отказаться в преподавании от дидактически несостоятельных Си и Си++. Java представляет собой приемлемый компромисс: современный язык программирования, разработанный в традиции, близкой к Паскалю, Модуле-2 и Оберону, но с сознательной попыткой замаскировать это синтаксисом, сходным с синтаксисом Си. В качестве практика я, таким образом, приветствую язык Java везде, куда он планомерно входит как альтернатива Си или Си++. Однако те, кто уже обрел столь же мощный, но эстетически более совершенный язык программирования, такой как Оберон или Ада-95, спокойно могут держаться за него, не боясь оказаться в невыгодной «языковой ситуации».
Профессор оказался не совсем прав с Оберон и Ада-95.
>>альтернатива Си или Си++
>>Java
>>альтернатива
Спасибо — посмеялся.
>>Паскалю
>>такой как Оберон или Ада-95, спокойно могут держаться за него, не боясь оказаться в невыгодной «языковой ситуации».
Вся квалификация в одном предложении. Вернее её отсутствие. Мне жаль тех, кто ему поверил. Они оказались на задворках.
До появление жавы они воспевали «суперязыки» будущего, который дохли один за другим в небытие.
А по поводу «почему жава» — ну во-первых жава требует намного более низкой квалификации от данного «профессора» и шансы у оного осилить тот же С++ равны нулю, а уж про реальный си я даже заикаться не буду. Учить проще. Проверять проще. Но это всё не важно.
Основная причина — все эти вузы в сша сидят на грантах больших корпораций. Кто стоял за C/С++? К тому моменту дохлая Bell labs? А кто пропихивал жабку? Сан + корпоротивный сектор, который был опутан связями с сан и прочими вендорами, которые требовались новые адепты. Естественно С++ их не интересовал как излишне сложный и никакой в тот момент, хотя дава была ещё более никакая, но всяко лучше С++.
То же самое твориться и в вузах рашки(в центральной не так сильно), а вот на периферии и снг — во все поля — все под майкрасофтом как и этот ресурс. И точно так же «сишарпик наше всё, маздайка — наше всё и С/С++ не язык».
Всегда выгодней учить тому, что проще и тому, за чем стоят серьёзные дяди которые дадут пирожок и за кадры и за выбор. Особенно если эти дяди нас кормят — им не откажешь.
http://www.tiobe.com/tiobe_index — языковый рейтинг по количеству квалифицированных инженеров, курсов и ранжированию в поисковых системах. Пока Java лидирует.
История языков программирования: что помогло языку Java «войти в каждый дом»