Здравствуйте, Hard_Club, Вы писали:
H_C>Собираюсь учить Java после повышения на C++ senior. Причины: C++ обошел стороной мои любимые AI и NLP.
H_C>У кого есть опыт. Проще ли будет его выучить?
А от аналогичных языкодробительных задач на любом другом языке ты не охренел? Чтоб отвечать на такие вопросы, надо хоть раз стандарт языка прочитать (и понять, ага). Только это все не нужно тебя для "твоих любимых AI и NLP". Для них тебе библиотеки нужны, вот их и изучай, а не копайся в языке.
Здравствуйте, Hard_Club, Вы писали:
H_C>Собираюсь учить Java после повышения на C++ senior. Причины: C++ обошел стороной мои любимые AI и NLP.
Один вопрос — а зачем? Вы собираетесь менять работу? Вам больше будут платить на основном месте работы?
H_C>У кого есть опыт. Проще ли будет его выучить?
Проще, чем что?
H_C>Почитал — http://habrahabr.ru/post/111189/, и охренел.
Просветите неучей, от чего там охреневать?
Как и все умники на хабре, вангую, что сначала был долгий дебаг при помощи брикпоинтов и тогда, когда ошибка была найдена и понята, этот зазнайка добавлял новый вопрос в тест.
Не стоит охреневать. Если хотите, садитесь за книжки и все.
H_C>>Собираюсь учить Java после повышения на C++ senior. Причины: C++ обошел стороной мои любимые AI и NLP. N_C>Один вопрос — а зачем? Вы собираетесь менять работу? Вам больше будут платить на основном месте работы?
Мне нужен опыт в описанных выше технологиях для собственного проекта. + Hadoop. Вот интересно лучше он чем С++-гриды, такие как DataSynopse.
N_C>Просветите неучей, от чего там охреневать?
В Java NaN'ы несравнимы между собой. Но есть два исключения в работе класса Float:
1.Если f1 и f2 оба представляют Float.NaN, тогда метод equals возвращает true, в то время как Float.NaN==Float.NaN принимает значение false.
2.Если f1 содержит +0.0f в то время как f2 содержит -0.0f, метод equal возвращает false, в то время как 0.0f==-0.0f возвращает true.
Здравствуйте, Hard_Club, Вы писали:
H_C>>>Собираюсь учить Java после повышения на C++ senior. Причины: C++ обошел стороной мои любимые AI и NLP. N_C>>Один вопрос — а зачем? Вы собираетесь менять работу? Вам больше будут платить на основном месте работы? H_C>Мне нужен опыт в описанных выше технологиях для собственного проекта. + Hadoop. Вот интересно лучше он чем С++-гриды, такие как DataSynopse.
Технологии или язык? Мне кажется, что здесь идет путаница.
N_C>>Просветите неучей, от чего там охреневать? H_C>В Java NaN'ы несравнимы между собой. Но есть два исключения в работе класса Float: H_C>1.Если f1 и f2 оба представляют Float.NaN, тогда метод equals возвращает true, в то время как Float.NaN==Float.NaN принимает значение false. H_C>2.Если f1 содержит +0.0f в то время как f2 содержит -0.0f, метод equal возвращает false, в то время как 0.0f==-0.0f возвращает true.
Хех. В любом языке есть тонкости и нюансы. Можно кучу аналогичных примеров придумать и для C++ и для C#...
Здравствуйте, Hard_Club, Вы писали:
H_C>Собираюсь учить Java после повышения на C++ senior. Причины: C++ обошел стороной мои любимые AI и NLP.
H_C>У кого есть опыт. Проще ли будет его выучить?
Ява по сравнению с С++ пуста. Там ничего нет, всё сделано крайне просто. C# интереснее.
Вот что нужно будет изучать — это библиотеки.
Здравствуйте, Hard_Club, Вы писали:
H_C>Почитал — http://habrahabr.ru/post/111189/, и охренел.
А не надо его до такого уровня задрачивать. Это только для собеседования в конторы, где говнокод разгребать приходится нужно будет задачки такие решать. А при реальной работе такие запутанные неоднозначные случаи нормальные разработчики будут избегать. Соответственно кроме разгребания говнокода, который писали любители продемонстрировать знания деталей, и на собеседовании в конторы, где таким занимаются, это все мало нужно на практике.
Уютно. Тебя контролируют, делаешь шаг не туда — мягко поправляют, ошибки искать проще... Вернуться назад, где никто тебе не помогает (а ты привык!), и самому за все приходится отвечать — нелегко.
Образно : переход от С++ к Java/C# — это как с горной вершины, где свистят ураганы и льют холодные дожди — в уютную долину, в теплый домик, где симпатичный мягкий диван, мягкая подушка... А обратный переход — вытаскивают тебя с этого дивана из этого домика и обратно на горный перевал.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Образно : переход от С++ к Java/C# — это как с горной вершины, где свистят ураганы и льют холодные дожди — в уютную долину, в теплый домик, где симпатичный мягкий диван, мягкая подушка... А обратный переход — вытаскивают тебя с этого дивана из этого домика и обратно на горный перевал.
Неправда. После C++ я пытался пытался перейти на C#. Было жутко неудобно, неуютно, некомфортно, и я забросил это занятие.
Здравствуйте, Hard_Club, Вы писали:
H_C>Собираюсь учить Java после повышения на C++ senior. Причины: C++ обошел стороной мои любимые AI и NLP.
H_C>У кого есть опыт. Проще ли будет его выучить?
H_C>Почитал — http://habrahabr.ru/post/111189/, и охренел.
шутка по теме.
С уважением Denys Valchuk
IMHO чем больше мнений тем оптимальней выбор варианта... :)
Re: Java проще C++?
От:
Аноним
Дата:
23.07.13 20:51
Оценка:
Здравствуйте, Hard_Club, Вы писали:
Создатели джавы пошли по пути переупрощений, из-за этого в языке существует некоторое количество косостей, а другие "странности" стандартны для языков с аналогичными конструкциями.
В целом, конечно, все не так легко, как бывалый сиплюсплюсник мог бы ожидать, халявы не будет, и стандарт придется помусолить, но C++ все равно гораздо страшнее.
А>Создатели джавы пошли по пути переупрощений, из-за этого в языке существует некоторое количество косостей, а другие "странности" стандартны для языков с аналогичными конструкциями.
Здравствуйте, Hard_Club, Вы писали:
H_C>У кого есть опыт. Проще ли будет его выучить?
Я переходил с C++ на Java в добровольно-принудительном порядке (сейчас вернулся назад, но переходу рад, помогло несколько переосмыслить взгляд на разработку ПО). Как это сделать быстро и безболезнено я описал тут. Выучить Java не проще, т.к. язык проще, но сопутствующих технологий ощутимо больше.
H_C>Почитал — http://habrahabr.ru/post/111189/, и охренел.
Сам понимаешь, надергать похожего про плюсы можно куда как масштабнее
Здравствуйте, kaa.python, Вы писали:
KP>На шаблоны в Java без слез смотреть нельзя.
Вы, очевидно, имеете в виде generics. Признаю — не самая элегантная фича. Но, во-первых, у авторов не было другого выбора, т.к. необходимо было сохранить совместимость с огромным объемом уже существовавшего на тот момент кода. А во-вторых, если не смотреть, а пользоваться, но весьма полезная вещь, меня, во всяком случае, на слезу не прошибает.
KP>Код обвешаный соплями try/catch, мягко говоря, не очень удобно читать.
Да любой код читать не так "удобно", как Агату Кристи. Но на Java пишутся огромные приложения, так что exceptions — весьма полезный механизм. Время от времени читаю рассуждения о том, что checked exceptions — это зло. По моему опыту это не так, причем сильно не так, т.к. избавляет от многих ошибок уже на стадии компиляции, а с современными IDE — уже на этапе печатанья.
Здравствуйте, 31415926, Вы писали:
3>Вы, очевидно, имеете в виде generics. Признаю — не самая элегантная фича. Но, во-первых, у авторов не было другого выбора, т.к. необходимо было сохранить совместимость с огромным объемом уже существовавшего на тот момент кода. А во-вторых, если не смотреть, а пользоваться, но весьма полезная вещь, меня, во всяком случае, на слезу не прошибает.
Java — вообще язык компромиссов. Если на него переходишь после C++, то он кажется чудовищно недоразвитым, особенно в области метапрограммирования. Потом, когда привыкнешь, всей его недоразвитости не замечаешь.
Здравствуйте, kaa.python, Вы писали:
KP>Java — вообще язык компромиссов. Если на него переходишь после C++, то он кажется чудовищно недоразвитым, особенно в области метапрограммирования. Потом, когда привыкнешь, всей его недоразвитости не замечаешь.
Да любой язык программирования (кроме сугубо академических) грешит компромиссами. Просто Java используется в другого типа проектах, нежели C++. Я с ужасом представляю себе проект на несколько миллионов строк, который развивался в течение десятка лет под давлением бизнеса сменяющимися командами (зачастую — с сомнительной квалификацией) и написанный при этом на языке с развитыми средствами метапрограммирования. Ровно из тех же соображений я крайне скептически отношусь к перспективам Scala, хотя сам язык мне нравится, и с удовольствием бы на нем попрограммировал, особенно после того, как автор угомонится и начнет всерьез заботиться о совместимости последовательных версий (на что, судя по всему, надежды мало).
Здравствуйте, 31415926, Вы писали:
3>Да любой язык программирования (кроме сугубо академических) грешит компромиссами. Просто Java используется в другого типа проектах, нежели C++. Я с ужасом представляю себе проект на несколько миллионов строк, который развивался в течение десятка лет под давлением бизнеса сменяющимися командами (зачастую — с сомнительной квалификацией) и написанный при этом на языке с развитыми средствами метапрограммирования.
Я, сейчас, над таким работаю, разве что команда была и есть высококвалифицированная. Ну, бывают сюрпризы, что уж тут, хотя, индокод на Java куда опаснее для психического здоровья
3> Ровно из тех же соображений я крайне скептически отношусь к перспективам Scala, хотя сам язык мне нравится, и с удовольствием бы на нем попрограммировал, особенно после того, как автор угомонится и начнет всерьез заботиться о совместимости последовательных версий (на что, судя по всему, надежды мало).
Да, я посмотрел на Scala и мне подумалось, что нагородить на ней можно еще похлеще чем на C++, хотя, язык приятный во всех отношениях, но требования к разработчикам должны быть очень высокие.
Как по мне Java это С++ из которого выкинули все лишнее и добавили кучу полезных фич — к стати фичи C++ потихоньку перенимает у Java в последнее время.
Перешел на Java с С++, теперь без слез не могу смотреть на С++
Здравствуйте, kaa.python, Вы писали:
KP>Код обвешаный соплями try/catch, мягко говоря, не очень удобно читать.
А не надо городить сопли с try catch, и все хорошо будет . При некоторым опыте, когда стараешься код держать в приемлемом состоянии, обходишься практически без соплей. А сопли максимум в пределах метода один раз. А часто используемые обработчики можно аспектами на аннотациях разрулить, весьма читабельно получается. Соответственно если уметь готовить их, то исключения практически не напрягают. По крайней мере они не хуже исключений в плюсах, питоне, шарпе.
Здравствуйте, omgOnoz, Вы писали:
O>Как по мне Java это С++ из которого выкинули все лишнее и добавили кучу полезных фич — к стати фичи C++ потихоньку перенимает у Java в последнее время.
это ты про generic'и, try-with-resources, val, и когда уж там они наконец появятсялямбды?
Здравствуйте, Hard_Club, Вы писали:
H_C>1.Если f1 и f2 оба представляют Float.NaN, тогда метод equals возвращает true, в то время как Float.NaN==Float.NaN принимает значение false.
В целом, в Java оператор == почти что бесполезен для reference-типов. Это вбивается в девелоперов на уровне подкорки: всегда пишите if("Vasya".equals(customerName)), и никак иначе.
H_C>2.Если f1 содержит +0.0f в то время как f2 содержит -0.0f, метод equal возвращает false, в то время как 0.0f==-0.0f возвращает true.
Это уже особенность реализации compile-time вычислений. С ними почти во всех языках засада — компилятор устроен не совсем так, как рантайм, и иногда делает всякие неожиданные вещи.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, elmal, Вы писали:
KP>>Код обвешаный соплями try/catch, мягко говоря, не очень удобно читать. E>А не надо городить сопли с try catch, и все хорошо будет . При некоторым опыте, когда стараешься код держать в приемлемом состоянии, обходишься практически без соплей. А сопли максимум в пределах метода один раз. А часто используемые обработчики можно аспектами на аннотациях разрулить, весьма читабельно получается. Соответственно если уметь готовить их, то исключения практически не напрягают. По крайней мере они не хуже исключений в плюсах, питоне, шарпе.
Как без лишних try/catch открыть файл и записать в него что-нибудь?
Здравствуйте, alzt, Вы писали:
A>Как без лишних try/catch открыть файл и записать в него что-нибудь?
MyFileUtils.saveToFile(file, "Hello, file").
Которое кидает нужное тебе исключение, которое ты обрабатываешь на самом высоком уровне. А то и вообще рантаймовое.
Или еще вариант, в случае проблем эта утилита кидает эвент, а листерен соотвествующего эвента делает то, что нужно, запишет в лог, отобразит уведомление для юзера, поставит операцию записи в очередь, которая попробует повторить операцию.
Короче вариантов до черта, и зависит это от того, что конкретно надо делать в случае ошибки.
Здравствуйте, Sinclair, Вы писали:
S>Это уже особенность реализации compile-time вычислений. С ними почти во всех языках засада — компилятор устроен не совсем так, как рантайм, и иногда делает всякие неожиданные вещи.
Тем более, что с плавающей запятой никто вменяемый, представляющий как это работает внутри хотя бы отдаленно, никогда никаких == и equals не использует — всегда сравнение разности с дельтой.
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, alzt, Вы писали:
A>>Как без лишних try/catch открыть файл и записать в него что-нибудь? E>MyFileUtils.saveToFile(file, "Hello, file"). E>Которое кидает нужное тебе исключение, которое ты обрабатываешь на самом высоком уровне. А то и вообще рантаймовое.
Вариант, но фактически ты вся самое страшное засовываешь в эту функцию. Если на её реализацию не смотреть, то почти нормально.
Проблема с перехватов исключения на каком-нибудь более высоком уровне в том, что у тебя может быть какой-то важный ресурс, который тоже надо освободить. Т.е. добавляем как минимум finally.
E>>Которое кидает нужное тебе исключение, которое ты обрабатываешь на самом высоком уровне. А то и вообще рантаймовое. A>Вариант, но фактически ты вся самое страшное засовываешь в эту функцию. Если на её реализацию не смотреть, то почти нормально. A>Проблема с перехватов исключения на каком-нибудь более высоком уровне в том, что у тебя может быть какой-то важный ресурс, который тоже надо освободить. Т.е. добавляем как минимум finally.
тот же finally может быть на низком уровне, при работе с ресурсами.
Здравствуйте, Hard_Club, Вы писали: H_C>Собираюсь учить Java после повышения на C++ senior. Причины: C++ обошел стороной мои любимые AI и NLP. H_C>У кого есть опыт. Проще ли будет его выучить?
Java очень простой язык
не знаю, что такое NLP, но вот как вы на нем будете делать AI это я просто не знаю. нет, можно наверное чат-бота написать какого-то, но все остальное — нет.
Здравствуйте, Hard_Club, Вы писали:
H_C>Собираюсь учить Java после повышения на C++ senior. Причины: C++ обошел стороной мои любимые AI и NLP.
AI и тем более NLP — это махровое фричество в программировании. А я пришел к выводу, что нет существенной разницы между C++, C# и Java. Везде надо примерно одинаково копаться в гугле. А дело не в языке, а в API, который иногда просто бесит.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, McSeem2, Вы писали:
MS>Здравствуйте, Hard_Club, Вы писали:
H_C>>Собираюсь учить Java после повышения на C++ senior. Причины: C++ обошел стороной мои любимые AI и NLP.
MS>AI и тем более NLP — это махровое фричество в программировании. А я пришел к выводу, что нет существенной разницы между C++, C# и Java. Везде надо примерно одинаково копаться в гугле. А дело не в языке, а в API, который иногда просто бесит.
это махровое фричество в программировании. Что-то в этом есть, но почему же так?
Здравствуйте, omgOnoz, Вы писали:
O>Как по мне Java это С++ из которого выкинули все лишнее и добавили кучу полезных фич — к стати фичи C++ потихоньку перенимает у Java в последнее время.
O>Перешел на Java с С++, теперь без слез не могу смотреть на С++
Здравствуйте, Hard_Club, Вы писали: MS>>AI и тем более NLP — это махровое фричество в программировании. А я пришел к выводу, что нет существенной разницы между C++, C# и Java. Везде надо примерно одинаково копаться в гугле. А дело не в языке, а в API, который иногда просто бесит.
H_C>это махровое фричество в программировании. Что-то в этом есть, но почему же так?
Не знаю, но иногда API меня просто выбешивает своим тупизмом. Ну вот как так можно?!
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
всякий синтетический сахар и UB с точки зрения зрелых языков не интересны, но вот это
Integer a = 120;
Integer b = 120;
Integer c = 130;
Integer d = 130;
System.out.println(a==b);
System.out.println(c==d);
В результате выполнения данного кода будет выведено:
форменный песец.
Re[4]: Java проще C++?
От:
Аноним
Дата:
30.07.13 06:37
Оценка:
Здравствуйте, McSeem2, Вы писали:
H_C>>это махровое фричество в программировании. Что-то в этом есть, но почему же так? MS>Не знаю, но иногда API меня просто выбешивает своим тупизмом. Ну вот как так можно?!
Очевидно, потому что данная область не исследована полноценно, а в таких случаях люди применяют шарлатанство разной интенсивности (припудренное научными методами, естественно).
Здравствуйте, Sni4ok, Вы писали:
S>всякий синтетический сахар и UB с точки зрения зрелых языков не интересны, но вот это
S>
S>Integer a = 120;
S>Integer b = 120;
S>Integer c = 130;
S>Integer d = 130;
S>System.out.println(a==b);
S>System.out.println(c==d);
S>В результате выполнения данного кода будет выведено:
S>
Здравствуйте, Sni4ok, Вы писали:
S>всякий синтетический сахар и UB с точки зрения зрелых языков не интересны, но вот это
S>
S>Integer a = 120;
S>Integer b = 120;
S>Integer c = 130;
S>Integer d = 130;
S>System.out.println(a==b);
S>System.out.println(c==d);
S>В результате выполнения данного кода будет выведено:
S>
S>форменный песец.
Нужно просто понимать, что в java оператор == используется только для value типов, и никогда для ссылочных(ну, кроме случая, когда нужно удостовериться, что перед нами ссылки на один и тот же объект, а не равные по сути, но это крайне редкий кейс). Integer — ссылочный тип, и сравнивать его значения по == нельзя.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Философ, Вы писали:
Ф>Здравствуйте, jazzer, Вы писали:
J>>Чтоб отвечать на такие вопросы, надо хоть раз стандарт языка прочитать (и понять, ага).
Ф>а ты читал?
Потом, LR/GLR (PEG для натуральных языков не рекомендуется) после — почитать чего нибудь из филологии, просветлиться что выше синтаксиса прыгнуть будет ой как тяжело, после — перешел бы на фреймы, семантические сети, после — Neo4j/ANTLR и, наконец, остался бы на C++.