×Закрыть

Java или Node.js?

Добрый день, какой язык/технологию программирования учить?

Я студент, в этом году заканчиваю универ. Надо уже бы искать работу.

Учил в последнее время Java, сейчас читаю уроки по JavaFX.

Недавно написали из компании в моем городе, что нужен JS программист (писать на MeteorJS фреймворке), я собеседование не прошел, сказали учить еще 1-2 месяца Node.js, Meteor и тд.
Смотрел вчера рынок фриланса там очень много заказов по JS, а по Java почилал по форумах что фриланс редкий только Enterprise долгосрочные проекты. В нашем городе работы по Java нет.
Стоит ли прерывать изучение Java и учить MeteorJS? А если даже не пойду на работу, то буду фрилансить. А на следующий год хотелось бы пойти в бульшую компанию (SoftServe) на курсы Java. Что выбрать? Спасибо

LinkedIn

Лучшие комментарии пропустить

Джава = большой энтерпрайз в большом офисе с неиллюзорными шансами попасть на проект, который был рожден 10-летней назад в солнечном Бангалоре. Зато стабильнасць и корпоративная культура! На фриланс такие проекты не отдают в принципе.

JS/Node = модно, стильно, молодежно и вообще все cool kids щас на этом пишут. Спектр задач сильно разнообразнее Java, да и на фрилансе этого добра действительно навалом.

Тут скорее нужно ориентироваться на то, чем больше хотелось бы заниматься. Если хочется в бодишоп — Java, если чего-нить поинтересней — нода. Если фриланс, то однозначно нода. Востребовано и то, и другое, и вряд ли куда-то денется в ближайшее время. Миллиарды строк энтерпрайз-кода на Java кто-то должен поддерживать, а для фронт-энда альтернативы JS пока толком не придумали.

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

Вообще тема зачет. Обычно холивар разводять между C# vs Java а тут Java vs JavaScript

1. Открываешь rabota.ua, там очень удобное облако тегов.
2. Смотришь, по каким технологиям там наибольшее количество вакансий.
3. Ночами не спишь, учишь.
4. ?????
5. МЫ ВАМ ПЕРЕЗВОНИМ!!!

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

@Elena Morgun «Джава = большой энтерпрайз в большом офисе с неиллюзорными шансами попасть на проект, который был рожден 10-летней назад в солнечном Бангалоре» — по ходу кто то вообще не в курсе что сейчас пишут на JAVA.. {’Spring’, ’RxJava’}; ,безусловно хватает и интерпрайза, на обновление стека которого просто лень, типа работает ну и бог с ним.... так и на пыхе < 7v и на Python < 3v проектов навалом; На JAVA в нашем 2018 можно писать что угодно! Во первых нужно быть кодером, а на каком языке это уже не особо имеет значение. «JS/Node = модно, стильно, молодежно и вообще все cool» — Жабаскрипт выучил, ХТМЛ — выучил, «КСС» — выучил, даже на майсиквеле научился джоины билдить, а вот кодить не выучил((
«Спектр задач сильно разнообразнее Java» — НАПРИМЕР!!!?????? наверное я что-то упустил за время разработки на JAVA, удивите меня, буду рад выслушать, всегда приятно выслушать конструктивную критику!
«Тут скорее нужно ориентироваться на то, чем больше хотелось..» — наконецто разумная мысль.
«Если хочется в бодишоп — Java, если чего-нить поинтересней — нода» — бляяя... (удар рукой по лбу.) «чего-нить поинтересней» — относительно чего, людишки которые задаются таким вопросом, по ходу сами не понимают что интересного в кодинге вообще)), что такого интересного делает нода что жаба не может)) а вот наоборот есть чем похвастаться.
«Если фриланс, то однозначно нода» — пыха(мое заключение)!, на фриланс нормальные проекты вообще не выкладывают, у нормальных заказчиков как правило есть четкое видение ну или ±, и понимание кто и зачем им нужен, и они точно на апворке не сидят, а вот под пыху и ноду нищебродов навалом, которые к стати и деруться за последнюю копейку, так что вперед пыханодаармия!!
«Миллиарды строк энтерпрайз-кода на Java кто-то должен поддерживать» — на мой взгляд преуменьшение, .. больше, и далеко не потому что язык плохой. " а для фронт-энда альтернативы JS пока толком не придумали" — TS, Dart, Coffe, etc...!!!! да, компилиться в JS, ну да и бог с ним, много что во что компилиться)) главное как кодер мыслит и чувствует себя во время процесса. Пасаны и дифчата, придлагаю сначала научиться кодить, а потом можно конструктивно обсудить особенности и недостатки языков) желающих со мной поспорить на mikestotik@gmail.com

на майсиквеле научился джоины билдить

дальше можна не читати...

а что не понятно в этой фразе?)) это был сарказм)) перевод: на SQL писать команды с JOIN; ... у меня вообще мурашки по коже когда слышу «майсиквел» и «КСС»..

Это самое ужасное оформление цитирования, которое видел этот форум.

С этим не поспоришь.. на скорую руку

Что лучше летает? Слон или кит?

Слон — уши больше

ну тебя, как люд вообще с JSF живут..(

Друзья, мое предложение: Java 9 (10), Spring 5, Spring Boot 2, Gradle. Honey!!! на фронте Angular || React. (RX) жисть прекрасна!

Опять! Выбирай не технологию, а то чем хочешь и интересно заниматься. И тогда учи то, что нужно и подходит для данных задач.

Мы тут уже коллегиально установили, что он хочет изучать Go за день, максимум за неделю, только стесняется в этом признаться.

За день! Подождите года два — Гугл будет втирать, что овладеть третьим данном в Go можно будет за 10 минут.

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

Статистика спроса на Джинне:

djinni.co/salaries/?job=Node.js
djinni.co/salaries/?job=Java

У ноды медиана явно повыше. :) Но связано это скорее всего с «ненормальностью» выборки — мало джунов с Ноды начинают.

При этом по категории
$5000+ Java — 1250 поисков
$5000+ Node.js — 217 поисков.

А на следующий год хотелось бы пойти в бульшую компанию (SoftServe) на курсы Java.

Я бы на вашем месте изучал Go:
— В SoftServe требуются Go-разработчики.
— Go изучается за неделю.
— Через пару лет go полностью вытеснит java с nodejs из backend development’а.

В SoftServe требуются Go-разработчики.
Круто! А що за вакансія?
— Через пару лет go полностью вытеснит java с nodejs из backend development’а.
Джаву витіснить, коли з’явиться нормальний хендлінг помилок та женерики. Т.є. не раніше версії 2.0.
Круто! А що за вакансія?
Спросите у их hr’ов. Вот недавно они проводили митап по Go —
www.meetup.com/...g-Group/events/230225272 .
Джаву витіснить, коли з’явиться нормальний хендлінг помилок та женерики.

1. В Go самый продвинутый способ обработки ошибок.
2. Дженерики не нужны. Приведите примеры задач из практики, где без дженериков не обойтись. Мне пока такие не встречались.
3. Go уже полным ходом вытесняет nodejs с java в крупнейших it-компаниях. И этот процесс уверенно набирает обороты.
1. В Go самый продвинутый способ обработки ошибок.
Голослівне твердження. err != nil на кожен чих — це бойлерплейт.
a, b = try doSmth()
або на худий кінець
a = must doSmth()
зробили б код на порядки читабельніше
Приведите примеры задач из практики, где без дженериков не обойтись
Будь-які структури даних та загальні алгоритми. Гошні структури це убожище: для них навіть створили спеціальну сторінку slice tricks у вікі. tricks, карл!
Fan-in/fan-out по сотому разу починає набридать писать.
a, b = try doSmth()
або на худий кінець
a = must doSmth()
зробили б код на порядки читабельніше

Первый вариант, где вместо b возвращается error, является каноническим способом обработки ошибок в go.
Второй вариант элементарно реализуем на основе первого. Он также присутствует в стандартной библиотеке go — см., например, golang.org/pkg/regexp/#MustCompile .

Будь-які структури даних та загальні алгоритми. Гошні структури це убожище: для них навіть створили спеціальну сторінку slice tricks у вікі. tricks, карл! Fan-in/fan-out по сотому разу починає набридать писать.

Хотелось бы больше конкретных практических примеров, а не бла-бла-бла.

Мова має давать людині вибір, хендлить помилку чи пропускать. Оскільки зазвичай все зводиться до return err, то дефолтною поведінкою має бути прокидування ексепшна нагору, а щоб його зловить — try doSmth()
Якщо ж гофери настільки упороті, що хочуть заставить всіх робить err != nil, то must doSmth() обходитиме це непорозуміння. Я кажу не про окремі версії функцій, а про модифікацію поведінки. Дві версії функції для паніків і без — це гофер вей. В плані плодить бойлерплейт :-)

Хотелось бы больше конкретных практических примеров, а не бла-бла-бла.
Структури даних, я ж сказав. Лінкедліст, дабл лінкед ліст, circular linked list, стек, дека, та іже з ними. За деталями — читайте Седжвіка або Кормена.
Варіант «юзай масиви та мапи» не приймається, оскільки вони не проходять за асимптотикою + втрачається інкаспуляція: я хочу всунуть елемент всередину, а не робить слайстрікс.
Варіант «юзай інтерфейси» не приймається, оскільки втрачається тайп-сейфеті на етапі компіляції. Інтерфейси — це анахронізм часів джави п’ятої.
Структури даних, я ж сказав. Лінкедліст, дабл лінкед ліст, circular linked list, стек, дека, та іже з ними

Перечисленные структуры данных реализуются в пару строчек кода. Если они действительно необходимы, что на моей практике встречалось крайне редко. Причем, без дженериков они получаются эффективнее и проще:

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

— один объект может участвовать сразу в нескольких структурах данных. Для этого достаточно встроить в него вспомогательные указатели от этих структур. При использовании дженериков эта задача может усложниться, если структура данных “владеет” помещенными в нее объектами.

Повторю пожелание — хотелось бы увидеть примеры из практики, где без дженериков никуда. Желательно со ссылками на исходники. Подсказать, чем практика отличается от теории?

Інтерфейси — це анахронізм часів джави п’ятої.

В memories!

Т.е. если некий объект может соваться как в список, так и в дерево, пихать в него дополнительные ссылки?

В SoftServe требуются Go-разработчики.
Спросите у их hr’ов. Вот недавно они проводили митап по Go

Эээ, а как из второго следует первое?

Они искали go-разработчиков на митапах в Харькове и во Львове.

Дженерики не нужны.
Помогает находить глупые ошибки на этапе компиляции.

Не путайте дженерики со статической типизацией

я не путаю, если выкинуть дженерики из джавы, то придется заменить все дженирики либо на работу с объектами класса Object, либо очень размытые интерфейсы — что то, что то ведет к проблема с типами, и сложностью определения с каким классом мы в реальности имеем дело

Дженерики не нужны. Приведите примеры задач из практики, где без дженериков не обойтись. Мне пока такие не встречались.
Ну, можна, трохи помедитувавши і полазивши по сорсах, знайти якого ж типу об’єкт в колекції і потім привести його до потрібного. Непогано було б ще перед приведенням перевірити об’єкт на instanceof і залогувати або кинути Exception, якщо в колекцію потрапив якись «незапланований об’єкт». Для того і є дженеріки, щоб уникнути цієї лишньої суєти.

этот язык точно завоюет мир, ведь для него даже появились вакансии!!!

Вам деньги платят за восхваление Go? :)

Да, тут же где-то писали, что гугл выделяет миллиарды баксов на продвижение Go. Мне перепадают кое-какие крохи.

— Go изучается за неделю.
— Через пару лет go полностью вытеснит java с nodejs из backend development’а.
А зачем тогда ему торопится и изучать его сейчас? — Вот через пару лет, когда Go вытеснит все остальные языки /*facepalm*/, он его ’за неделю’ © выучит и будет ему счастье. :)

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

Главное чтобы через пару лет джависты не учавствовали в похоронной процессии Го и ноде джысы.

а вот я думаю, что никто никого хоронить не будет)

Вы знаете, эта процессия будет длится годами, и за нее будут башлять. А на Го и вчерашние разносчики пиццы будут лабать за 300 баксов

Башлять будут за поддержание старых проектов, в которые уже вложены деньги. Вроде как в случае с COBOL. Реальность такова, что не имеет принципиального на каком языке пишется код, это всего лишь инструмент разработки. И этот инструмент должен быть простым, удобным и эффективным.

— Go изучается за неделю.
Вот тут можно поспорить. Go как язык учится за день, дальше дело за изучением библиотек и разных фич.
Вот тут можно поспорить. Go как язык учится за день, дальше дело за изучением библиотек и разных фич.

Вот тут можно поспорить. X как язык учится за Y минут, дальше дело за изучением библиотек и разных фич.
learnxinyminutes.com

В SoftServe требуются Go-разработчики.
SoftServe видимо определяет мировые тренды в популярности технологий?
Go изучается за неделю.
А С++ за 21 день.
Через пару лет go полностью вытеснит java с nodejs из backend development’а.
Потому что SoftServe будет нанимать только Go-разработчиков, да?
SoftServe видимо определяет мировые тренды в популярности технологий?

Кроме SoftServe есть еще парочка никому не известных компашек —
github.com/golang/go/wiki/GoUsers

Кстати, может кто-то скажет, почему так стремительно увеличиваются вакансии по Front End разработке?

може хоч трохи потік новачків перелізе з java на фротенд

Да их и так немало вроде

— конфеты или печенье?
— трактор!

Java или Node.js?
Phyton

И главное аргументов в комментарии то сколько.

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

Тогда уже и пыхпых можно предложить. Жить он будет долго. Да и новая версия на подходе

Кстати, нода билдит фронтенд. Об этом в комментах так никто и не вспомнил.

Я начинал с курсов Java, но уткнувшись в соотношение количества таких как я ребят «с курсов» и вакансий ушел в JS, о чем совершенно не жалею. Больше всего радуют безграничные возможности в плане full-stack. Тут тебе и сервер с Node.js, и браузер с Javascript и мобильные устройства с cordova/phonegap etc. Конечно выучив Node.js сразу писать на мобильные усройства не получится, но хотя-бы ЯП один, остальное дело времени.

Пишете на Java браузерный код?

Лично я — нет. Но были же такие штуки, как JSP/JSF?

Были, но насколько я знаю — уже не актуально

Старая история: «Новый, улучшенный, теперь — с банановым вкусом!». Это не прогресс, а лохотрон.

Не совсем понимаю к чему Вы клоните: нужно писать все на Java, а JS и остальные ЯП забыть?

Да нет, почему же. «Пусть расцветает тысяча цветов» (Мао-цзе-Дун). Считайте это брюзжанием старпера, которому уже лень переучиваться.

которому уже лень переучиваться
Так не нужно переучиваться, нужно ДОучиваться.
Переучиваться — это, например, перескакивать с программирования ЧПУ на программирование на java.
А в случае освоения близких технологий можно использовать уже имеющиеся знания.

Если Java + JavaScript, тоже вполне себе фуллстек, причем включая и нативный андройд и даже ios с react native.

Вообще тема зачет. Обычно холивар разводять между C# vs Java а тут Java vs JavaScript

Все эти холивары — пережитки прошлого. Теперь есть Go.

с такой упоротостью гоферов холивары будут еще более жестоки

не, теперь холивар просто перерос в «Java vs. JavaScript vs. Go»)
посему топикстартеру пора менять заголовок темы на указанный мною)

Значит, Java уже побила C#, JS — на очереди?

думаю уже надоело холиварить на эту тему, надо чето новое

1. Открываешь rabota.ua, там очень удобное облако тегов.
2. Смотришь, по каким технологиям там наибольшее количество вакансий.
3. Ночами не спишь, учишь.
4. ?????
5. МЫ ВАМ ПЕРЕЗВОНИМ!!!

открыл например по Java

Смотришь, по каким технологиям там наибольшее количество вакансий.
Must Have: Core Java, Linux, REST
МЫ ВАМ ПЕРЕЗВОНИМ!!!
REQUIRED
4+ years of Java experience , developing distributed web systems in Java
Ночами не спишь, учишь.
так что хоть 10 лет учите.
а 4+ years of Java experience — не получится.
вот никак — не получится из «учить» — эн лет опыта.

или вот в другой:
At least 5 years of experience in industry of software development.
At least 3 years of experience as software developer on web projects.

неверная вобщем это арифметика: Смотришь, по каким технологиям там наибольшее количество вакансий.

jobs.dou.ua/vacancies/?exp=0-1
java ee вакансий там нет, но есть такое jobs.dou.ua/...​olutions/vacancies/22229,
вообще не все так с j2ee плохо для джунов, просто нужно понимать что первая работа будет скорее всего в какой-то стремной конторе, где будут платить мало, но давать опыт.

Must Have:Linux
Можна сильно не звертати увагу. Недавно сам цікавився, що саме потрібно знати. Як виявилось, це максимум десяток команд, які можна прогнати ввечері на федорі/убунту в віртуалці.

и уметь запустить IDE и иногда сказать git push)

а запуск ІДЕ під пінгвінами чимось відрізняється від він?)

если чел в обморок не падает от непривычного окружения, то нет)

В линуксе (внезапно) тоже есть кнопка «пуск», в которой после установки IDE появляется иконка))

ну это в ваших кде с гномами, было/есть куча оконных менеджеров без оной)

kde(на крайняк gnome) — ідеальні ДЕ, щоб просто поставити їх і працювати, а не тратити зайвий час на кофіги dwm.
в будь-якому випадку, будь-яка пінгвіняча ДЕ буде краща за опус windows 10. Признаюсь, я її чекав, думав буде щось толкове. Виявилось абсолютно не юзабельним. Сидів без шапочки з фольги, на мраки про стеження уваги не звертав, так як просто хотів «прощупати» саме середовище.

Если че, я холивар открывать не буду)

я це знаю(внезапно!). Просто коментатор вище це подав в такій формі, наче запуск іде під лінуксом — це щось жахливе.

зачем ??? ... из любимой shell обычно проще запустить ... но кнопка, таки да, есть :)
а если стек позволяет, то Tmux + Vim + tmux sessions manager (tmuxp etc.) — еще быстрее ... одной командой открывается пачка панелей и окон и там редактор, командная строка, сервер с live reload поднялся и собрал последнюю версию кода сам и рядом тесты побежали + апи в тоже самое ... экономит время :)

5. МЫ ВАМ ПЕРЕЗВОНИМ!!!
Рекрутеры? Перезвонят? Вы точно об украинском IT?

Иногда звонят и без спросу

В том-то и суть, они только говорят, что перезвонят c:

Рекрутеры? Перезвонят? Вы точно об украинском IT?
кастую в топік Алесю :D

По моему мнению, учить node.js стоит хотя бы потому, что хорошо зная javascript уже можно писАть для огромного количества устройств и быть full-stack разработчиком.
Действительно, читать и поддерживать node.js код сложно. Даже изучая «образцовые» исходники node.js, сложно что-то понять. Навигацию по коду в силу его динамичности сложно осуществлять эффективно, поэтому приходится все держать в голове, а голова не резиновая.

Однако, с выходом ECMA 6 + если с самого начала использовать какой-то Gradual Typing (недавно наткнулся на этот термин, хорошо сказано!) ЯП типа TypeScript можно облегчить себе задачу значительно. Браузировать этот код проще.
Кроме того, JS с самого начала — весьма функциональный язык, что открывает врата в мир лаконичного, сухого эффективного кода.
Читать простыни Джава кода когда можно в одну строку навевает тоску, хотя если необходимость прикажет...

Походу, это современный Perl

Читать простыни Джава кода
Це як класична література — читаєш і душа радіє ^^)

Java 8 тоже весьма функциональна. Те же stream например делают код лаконичным.

Джуники, забейте на Java! Рынок уже пресыщен Java Junior. Я бы посоветовал пойти в JS, Ruby или Python. Предложение весьма маленькое. Да и языки весьма крутые
P.S. JS сильно не учил =)

а лучше забейте на программирование и идите в маркетинг/финансы

ну не настолько радикально же)

А еще лучше — откройте ларек с шаурмой и живите полной жизнью!

Привет.
Посоветуйте курсы и книги по node.js.
Спасибо.

Сейчас вакансий довольно много по js, практически везде требуется знание node.js (даже если вакансия на фронт). Также, уже возможно писать десктопные приложения на нём. Однако, вам-то что больше нравится? Java и JS это абсолютно разные подходы. Обычно любители первого плюются на второе. Так что вы сразу решайте, вам строгую статичную типизацию и чтобы компилятор мешался в каждую строчку или полную свободу, в том числе свободу выстрелить себе в ногу?

ну почемуже, не плююсь ни на первое, ни на вторе ... просто не надо пытаться использовать платформу не естественным для нее способом и все будет очень даже хорошо (не писать на JS как на Java и наоборот)

Хорошо что есть еще кто-то, кто это понимает. Не всё потеряно для профессии.

Java это не только интерпрайз, а ещё и андроид. Когда более или менее освоишь java core попробуй андроид. Может понравится, да и на фрилансе там можно подзаработать.

А в чём проблема учить и одно и другое? Лишним уж точно не будет.

думаю это тяжело, по объективным причинам

Каким?

очень разные языки, очень разные апроачи. паралельно учить их — не выучишь ни одного.

Чушь. Студент в рамках одного семестра учит 5-6 существенно разных курсов только по специальности. Пара часов на каждый язык в день не только позволит освоить два новых инструмента, но и (за счёт выделения общности и изменчивости в семантике) повысит общую грамотность проектирования. Элементарно глаз меньше замыливается — зная, что некую задачу можно решить иначе, перестаёшь свято верить в баззворды.

. Студент в рамках одного семестра учит 5-6 существенно разных курсов

Не вчить, а здає. І не 5-6, а 8-11.
Вчить, зазвичай, не більше 3-х і то в основному за межами універу.

В усьому іншому — повністю підтримую.

Студент в рамках одного семестра учит 5-6
только на выходе не знает ни одного как правило. напомнило www.vbforums.com/...t.php?attachmentid=101587

Это очень хороший комикс, одинаково применимый к изучению одного, двух, трёх, n языков программирования. От того, что язык будет один, за 21 день он не выучится.

К слову, изучение какого-нибудь чистого функционального ЯП параллельно с изучением С++ (о котором речь в комиксе, на который ты ссылаешься) существенно упрощает усвоение шаблонного метапрограммирования, анонимных функций и замыканий в последнем, эффективно уменьшая время на изучение; в своё время какой-нибудь chain-of-responsibility в С++ может облегчить усвоение распространённых монад в Haskell. Вещи, сложные для понимания в одном языке, могут быть тривиальными в другом.

оно упрощает когда вы уже разбираетесь.

возможно вы гениальны, и изначально вам все легко давалось. но кого я видел (и сам таким же был), поначалу все очень сложно давалось, и по себе помню когда понастоящему столкнулся с асинхронностью JS, у меня мозги закипали и отказывались это воспринимать, а если к этому добавить в паралели изучение Thread-ов, я бы пожалуй программистом бы не стал, ибо не смог бы усвоить

Я указатели в C не мог понять три года (что, впрочем, не мешало мне ими пользоваться). «Мультипарадигменное проектирование» Коплиена перечитывал пять раз, пока оно до меня дошло. Не сказал бы, что мне что-то даётся особенно легко.

Бесит, откровенно бесит такое отношение к знаниям. «Что выучить — A или B?». Разбери оба и сделай осознанный выбор! Сопливые школьники учат кучу разнообразных курсов одновременно, про университет модно писать что он «бесполезен, но учит учиться», но когда доходит до реальной учёбы — не дай Ктулху перенагрузить бедного программиста! Он же, бедненький, хрупкий, он же сломается! Он же как одну книжку читает, все остальные тут же забывает, у него же мозг как у канарейки. А программирование такое сложное, все языки такие сложные, их специально делают сложными, чтобы бедному программисту жизнь усложнить.

Язык — это инструмент. И проектируют их (во всяком случае, когда проектируют) так, чтобы ими было удобно пользоваться. Их не надо изучать, как не надо изучать мясорубку или топор. Ими нужно учиться пользоваться и пользоваться. Серебряной пули нет — ни в реализации, ни в проектировании — любая новая технология расширяет представление о методах решения задач, а багаж инструментов позволяет выбирать их под задачу. Багажа ещё нет? Сцепил зубы и набираешь. Пробуешь. Испытываешь на прочность. Язык A, язык B, язык С — к тому моменту, когда (и если) ты определишься с узкой специализацией, ты по крайней мере определишься с ней сознательно и не будешь бездумно повторять заученные догмы, имея уже возможность сравнивать возможные подходы к решению. И даже после этого полезно смотреть по сторонам и рассматривать новые технологии.

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

Вам тоже multithreading не нравится? Человеку сначала работу нужно найти и кушать что-то, а потом уже дальше развиваться и расти, а при таком подходи времени на параллельную учебу двух языков(до того момента как он сможет этим зарабатывать) уйдет возможно в 2 раза больше чем на 1.

Вам тоже multithreading не нравится?

Что, простите?

Человеку сначала работу нужно найти и кушать что-то

«В этом году заканчиваю универ, пора бы искать работу» — это утверждение не содержит драматизма, которым вы передёргиваете.

потом уже дальше развиваться и расти

Либо ты развиваешься и растёшь, либо нет. Потом не наступает никогда.

при таком подходи времени на параллельную учебу двух языков(до того момента как он сможет этим зарабатывать) уйдет возможно в 2 раза больше чем на 1.

Возможно. А возможно нет. А может быть даже меньше. Хочет он того или нет, но на работе ему ещё придётся разбираться с предметной областью, и от того, насколько быстро он это сделает будет зависеть объём того самого «кушать». И вот тут я с уверенностью могу сказать, что никакие знания и никакой опыт лишними не окажутся. Умение учиться новому и разному — в первую очередь.

Seriously, если человек не в состоянии «развиваться и расти» сейчас, схерали он начнёт это делать в будущем? С обретением работы у него свободного времени резко станет больше? Мотивации? Мозг больше кислорода начнёт получать?

Юниоры развиваются и растут во время работы, а не только в свободное время, т.к. из-за малого опыта, даже простые задачи для них будут развитием, и это даже не говоря о том что на работе дают фитбек и менторят, никаких глубоких пониманий предметных областей как правило джунам особо не нужно.
И лучше хорошо выучить JS или Java, найти работу и учить второе, чем хреново знать и то и другое, сидеть дома и быдлокодить.
Конечно лучше знать сразу все вместе, писать только как в бест практис, знать несколько других ЯП и технологий минимум на уровне мидла, иметь несколько пет проектов развернутых в aws и каком-то клауд фаундери, с хадуп кластером в довесок, только вот что-то такие джуники особо не встречаются в природе...

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

Сначала хором рекомендуем начинающим учить поменьше, а потом удивляемся тому, что они мало знают. Хм.

И лучше хорошо выучить JS или Java, найти работу и учить второе, чем хреново знать и то и другое и сидеть дома...

Это ложная и крайне вредная дихотомия. От того, что вы что-то не выучите, что-то другое вы автоматически лучше знать не начнёте.

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

Да, давайте унижать их ещё сильней. Давайте им говорить, что они не только учиться, но и работать не могут.

А то вдруг начнут.

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

С самого начала этого треда. Ссылочку дать?

Я написал, что лучше потратить Х времени что бы выучить хорошо ОДИН язык и его область применения, чем потретить Х времени на ДВА разных языка и выучить оба хреново. Я не писал что нужно нужно потратить Х/2 времени на N/2 ЯП. За месяц чел явно выучит лучше JS если он потратит месяц на изучения только JS, а не на изучения JS и Java. Я не знаю как это можно разжевать еще проще и понятнее...

Я не знаю как это можно разжевать еще проще и понятнее...

Я тебя хорошо понимаю. Я просто с тобой не согласен. Такое бывает.

за месяц чел явно выучит лучше JS если он потратит месяц на изучения только JS, а не на изучения JS и Java

Вот это утверждение не имеет под собой никакого обоснования, кроме ad populum в виде «явно».

Рассмотрим процесс обучения, предположим что человек выделяет 4 часа в день на самообразование.

В первом случае он учит только JavaScript — читает теорию, решает учебные задачи, учится пользоваться библиотеками. Часа через два упорного обучения, если у него нет шила в одном месте и JavaScript его не прёт сам по себе (и тут я его вполне пойму), от учёбы его начнёт подташнивать. Мозг потребует переключения контекста, он начнёт отвлекаться, эффективность обучения резко сойдёт на нет — хотя в общем и целом он был бы способен выучить за день больше.

Во втором случае как только ему надоедает читать про JavaScript, он переключает внимание на Java (архитектуру, теоретические основы, проектирование, алгоритмы, whatever). Мозг радостно воспринимает смену контекста и позволяет ему употребить ещё столько же информации. За счёт общей области перекрёстные знания поддерживают друг друга, за счёт разной узкой направленности формируется большая гибкость ума. Надоело читать про Java — вернулся к JavaScript (или вёрстке, или базам данных, или ещё какой скриптовый язычок решил попробовать для контраста).

Как-то так мозг устроен, понимаешь. Отчасти поэтому в школе нет «дней математики» и «дней литературы» — это неэффективно.

Да, только кроме JS ему надо выучить еще CSS + желательно какие-то пост/пред процессоры + HTML + общие понимания устройства DOMa, + какой-то JS фреймворк типа ангуляра, что уже совсем не один JS, так что там есть куда свичнуть контекст, + в JS тоже есть и алгоритмы, архитектуры, паттерны, ооп и т.п. + декларативные vs императивные фреймворки, в общем куча всего.
С другой стороны все это красивое описание изучения разных технологий и т.п. хорошо для человека у которого уже есть какое-то понимание, а у человека который еще не доучился до джуна, это все создаст только адскую кашу в голове. Да и скорее всего как только чел начнет понимать как накодить что-то более менее стоющее на JS он свичнется на Java и там будет сидеть снова тупить в IDE и ненавидить наследования, типизацию и т.п. желая разбить монитор после каждой ошибки компиляции.

кроме JS ему надо выучить еще CSS + желательно какие-то пост/пред процессоры + HTML + общие понимания устройства DOMa

Отлично! Пусть учит.

какой-то JS фреймворк типа ангуляра

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

в JS тоже есть и алгоритмы, архитектуры, паттерны, ооп

Чудесно! Что мешает к этому всему добавить ещё и Java (C#, C++, C, Python, Ruby, whatever)? Посмотреть на то самое ООП с разных сторон (прототипное и классовое с одиночной диспетчеризацией, как минимум), оценить pros and cons разных систем типов, оценить сложность и эффективность реализации тех или иных алгоритмов в разных языках? Изучение на примерах — это же самый простой его вариант, так почему не дать человеку на эти самые примеры посмотреть?

у человека который еще не доучился до джуна, это все создаст только адскую кашу в голове

Предлагаешь учить детей в школе одной, скажем, математике? Иначе ведь у них в голове будет адская каша — до джуна-то ещё как до Марса на байдарке.

Ок, я с тобой согласен, на 100%. Сколько у тебя есть примеров таких людей?

Не очень много, к сожалению. Другое дело, что эти немногие — одни из лучших знакомых мне программистов.

Ну и я так учил наших интернов. Результат положительный.

У интернов уже скорее всего был не плохой бекграунд, насколько этот совет применим к людям без него?
У нас в универе насколько я помню сначала учили основы программирования — основы С и С++, потом учат БД и устройства ОС + немного программинг под линуху, далее другие ЯП, а не сразу Java cо всем J2ee заопарком + JS с WEBом + ноду + C# и т.п.
Конечно универ не дает норм образования в плате разработки ПО, но это уже проблемма качества преподаваемого материала и самих преподов.

Если из 100% времени человек будет траить на изучение одного ЯП 50%, то он будет учить его в 2 раза дольше. И в итоге не факт, что оба языка он будет знать достаточно хорошо, потратив при этом не год, к примеру, а два. А вот освоив фундаментально один язык, выучить второй, третий и т.д. уже не такая проблема, при этом он потратить на это ещё меньше времени, т.к. основные принципы практически везде одинаковы.

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

да и повышает шанс каши в голове

Кашу можно упорядочить. Пустоту нельзя.

С точностью до наоборот. Каша в голове хуже пустоты, она ресурсы жрет (З/П время и т.д.), а функцию (качественная робота)не выполняет. Особенно это чувствуется , когда на кашу возлагают какие-либо задачи...

Если человек это осилит то потом легко может прыгать почти на любые технологии

Фантастическая чушь. По уровню идиотизма это утверждение где-то рядом с «выучи C++, после него на любом языке писать сможешь».

Надо учить один язык

Вот откуда это «надо»? Чем оно обосновано кроме страха? Мировая педагогическая практика, внезапно, категорически против — вы где-нибудь видели факультет CS, на котором бы читали только CS? Или хотя бы только один ЯП? А вам не приходило в голову задуматься — почему?

учить...паттерны

А теперь откройте «Patterns Hatching» Влиссидеса (надеюсь, вы знаете, кто это такой) и прочитайте что он там думает про изучение и заучивание паттернов.

учить два сразу — замедляет процесс уменьшая при этом выхлоп

И у вас, конечно же, есть метрики, доказывающие это утверждение. Это заявка на прорыв в педагогике, между прочим. Срочно публикуйтесь.

Фантастическая чушь. По уровню идиотизма это утверждение где-то рядом с «выучи C++, после него на любом языке писать сможешь».
все программирование сводится к преобразованию состояния, это становится ясно после того как освоишь хотя бы один язык — все остальное детали, но изначально этого почти никто не видит
Вот откуда это «надо»?
уже говорил — более эфективно распределение самого важного в жизни ресурса — времени, если для кого-то это не важно — то не надо
изучение и заучивание паттернов.
изучение и заучиванние абсолютно разные вещи — я говорил об изучении. в моем понимании результат этого изучения, должен дать человеку понять что, где и как использовать
И у вас, конечно же, есть метрики, доказывающие это утверждение.
у меня есть логика. в данном случае человека можно сравнить с однопроцесорным компьютером, на котором запущено два паралальеных процесса — реализация паралельности у человека в этом деле как в любой ОС — при помощи выдачи «квантов», так вот, при пререключения процессов, если вы знаете просиходить save/restore контекста, но человек не компьютер, и выполнять эффективно эту операцию не может, но с другой стороны он может обобщать информацию, но это отдельный «тяжелый процесс». итого вы получите следующий результат — (TL(JS) + TL(Java))*SCTL(TL(JS), TL(Java)) — где — TL — время необходимое на изучение языка, а SCTI — функция возвращающая средний коефициент на переключения контекста между языками + 1, то есть будет межде 1 <= SCTL(TL(JS), TL(Java))

это не психология, это как бы очевидно

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

А вся математика сводится к топосам (классическая — к категории множеств). Не хочешь производную в конечных ординалах посчитать?

Понимаешь ли, в чём дело,- у разных языков программирования разная семантика. Твоё понимание «преобразования состояния» не очень поможет писать конкатенативно на Forth или PostScript, аппликативно на Haskell, конкурентно на Erlang или векторно на J; оно никаким местом не поможет тебе использовать изоморфизм Карри-Говарда для верификации кода на Coq или Agda. Да элементарную оптимизацию на шаблонах C++ это понимание тебе сделать не поможет, потому что шаблоны C++ - язык чисто функциональный, чтобы рассмотреть там изменение состояния надо хорошо понимать как работает компилятор, и для практического использования это вообще не нужно.

если для кого-то это не важно — то не надо

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

более эфективно

Я уже писал, что педагогика на текущий момент не согласна с этим утверждением. На моей стороне годы исследований и принятая мировая практика, что ты можешь им противопоставить?

в моем понимании результат этого изучения, должен дать человеку понять что, где и как использовать

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

реализация паралельности у человека в этом деле как в любой ОС

Где-то с этого момента начинается чушь.

Если очень грубо рассматривать человеческий мозг как нейросеть, то стоит отметить, что функциональном пространстве нейросети есть подпространство адекватного поведения, выход за которое может произойти при перегрузке сети слишком мощным либо однообразным сигналом (рекомендую монографию Ульфа Гренандера — «Лекции по теории образов, часть 2 — анализ образов», там очень хорошо этот момент расписан).

Иными словами — в отличие от CPU, мозг устаёт. Твои расчёты этого не учитывают.

это как бы очевидно

Каждый раз, когда тебе хочется сказать «очевидно», рекомендую сдерживаться и думать. Скорее всего, ты ошибаешься.

у разных языков программирования разная семантика. Твоё понимание «преобразования состояния» не очень поможет писать конкатенативно на Forth или PostScript, аппликативно на Haskell, конкурентно на Erlang или векторно на J; оно никаким местом не поможет тебе использовать изоморфизм Карри-Говарда для верификации кода на Coq или Agda. Да элементарную оптимизацию на шаблонах C++ это понимание тебе сделать не поможет, потому что шаблоны C++ - язык чисто функциональный, чтобы рассмотреть там изменение состояния надо хорошо понимать как работает компилятор
вот вы сейчас вообще не поняли о чем я вам говорил.
any application = initial state -> apply transformation -> result state. эту простую и краеугольную вещь как ни странно мало понимают, и в чем ее важность не видят, однако после ее осознания любая апроачи становятся очень простыми и понятными что и дает возможность легко осваивать практически любой язык (за исключением брейн фака т.к. он визуально сложно воспринимается).
На моей стороне годы исследований и принятая мировая практика, что ты можешь им противопоставить?
лично я исследования не проводил, я строю суждения на своем опыте
А в понимании Влиссидеса
вы ему на пост отвечаете? так почему после того как я объяснил что я имел ввиду, вы хотите заменить этот смысл другим?
Иными словами — в отличие от CPU, мозг устаёт. Твои расчёты этого не учитывают.
они это учитывают, я не описывал как работают указанные функции, опять вы пытаетесь подставить другой смысл.

в целом вы хороший троль, только надо быть акуратнее, люди ваши слова могут принять за истину

Я прям даже не знаю. Удачи вам в начинаниях и всякого такого.

В приличном обществе за такое и в морду дать могут.
Каждый раз, когда тебе хочется сказать «очевидно», рекомендую сдерживаться и думать.
А ты ваще кто такой? С какога раёна? А чё такой борзый?

С Будённовского. Нижняя Евдокиевка. Это там, где на засыпавшем школу терриконе олень стоит.

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

Для патернов естественно нужен опыт, но и язык без опыта не усвоишь

Человеку сначала работу нужно найти и кушать что-то
Наступна фраза як би натякає на те, що ТС на протязі навчання в універі не особливо парився, що він буде «їсти» після закінчення, а спокійно грав в кс/дота або/і бухав. Тому скажу просто, потрібно було думати раніше.
Я студент, в этом году заканчиваю универ. Надо уже бы искать работу.

В моєму випадку, 80% людей з потоку вже після захисту диплому почали собі питання пошуку роботи. Ця вибірка ділилась на дві частини: задроти і заучки. Перші взагалі не паряться, а другі покладали надію на свій диплом, з яким вони прийдуть в бодішоп і їх візьмуть на роботу, бо в «я гарно вчився(лась), в мене одні п’ятірки».

Ну с такиим подходом тут пообще ТСа стоит по вашей логики послать в эротическое путишествие и не забыть поглумиться над ним.
И не забывайте что кроме ТСа эту темы возможно нагуглят куча других людей, которые будут искать совет, включая тех же студентов 2-3-4 курсов.

Ну с такиим подходом тут пообще ТСа стоит по вашей логики послать в эротическое путишествие и не забыть поглумиться над ним.
таких як ТС тисячі, які починають чесати бубен в останній момент.
И не забывайте что кроме ТСа эту темы возможно нагуглят куча других людей, которые будут искать совет, включая тех же студентов 2-3-4 курсов.
це вже краще, бо вони 2-3-4 курс, а не через місяць захищають диплом і бб общажка.

Сначала пишут «Выучи все что только можно» а потом удивляются — почему нет девушки. Потому что пока люди расслабленно сидели на лавочке и общались с соседками или ходили по клубам, наш программист корпел над n-ной версией еще одного data mapping фреймворка.

При этом знает всё хреново, потому что коммерческого опыта нет

И снова эта выученная беспомощность. Откуда вы такие берётесь вообще? «Всё учить нельзя, потому что хорошо не будешь знать ничего», «без коммерческого опыта ничему не научиться». А вы пробовали? Что, собственно, такого волшебного в моноспециальном коммерческом опыте, кроме пенделя от начальства/заказчика, что по вашему мнению делает его венцом IT-образования? Зашоренное задрачивание узкого направления, ЧСВ от того что ты самый стандартный винтик?

Что, собственно, такого волшебного в моноспециальном коммерческом опыте
То, что хелловорды нахер никому не нужны. А студенты ничего другого не пишут.

А почему они ничего другого не пишут?

Скажу больше, многие и

хелловорды
не пишут.

Тот же вопрос — а почему?

Потому что, большинство универ научил заучивать и сдавать, а не понимать и учиться :)
Ну и отсутствие интереса, как такового.

Студент в рамках одного семестра учит
Проходит

Таки зависит от студента ;)

Ну таки вам не повезло со знакомыми студентами, что я могу сказать. Я не могу назвать себя прилежной студенткой, скорее даже с точностью наоборот, но у меня было достаточно ребят на потоке, которые учились, учили, тратили на это много сил и времени, и таки в итоге знали то, что изучали. И работать устроились по профильному направлению и даже, омг, этими знаниями пользуются.
Не надо всех грести под одну гребёнку.

Отклонения всегда есть, по своему потоку могу сказать, что отличники как-то в программисты не пошли.

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

Если бы у нас были CS-специальности, ситуация могла бы быть другой. Но у нас их, увы, нет.

Так специальность и есть самая CS, насколько это было возможно в 90х

И, положа руку на сердце, и поглядывая на актуальный курс в MIT или Yale — насколько она CS?

Не будем о грустном)
Но ведь и ситуация не такая, что они подавались в IBM Research Lab, их зарезали и они спились.

Тоже бывает. Хотя вот у меня знакомый подавался в MS Research — на собеседованиях его по CS гоняли до десятого пота; и таки взяли — потому что, позволяя себе такую вольность речи, он был отличником-самоучкой по CS.

В этом смысле образование нам, конечно, надо кардинально реформировать.

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

учили его и знают
На память знают?

Не надо ко мне доёбываться, пожалуйста. Если не можете вести аргументированную дискуссию и не можете перестать использовать демагогию, то лучше промолчите.
Я говорю о том, что люди знают и понимают то, что они учили. Курс не прошёл мимо них и это было не просто ради галочки. И, кроме того, их знания помогли им устроиться на хорошую работу по специальности. И при этом они учили и по 5, и по 8 предметов в триместр, и никому от этого плохо не было.

Не надо ко мне доёбываться, пожалуйста.
Хочу и буду
Я говорю о том, что люди знают и понимают то, что они учили.
Ну да, никто не может, а ваши мифические знакомые могут
И при этом они учили и по 5, и по 8 предметов в тримест
Проходили
никто не может

То, что ты не можешь, не означает что никто не может. Или ты как раз эту лекцию пропустил?

Ой, ну да, вы вдвоём с Катериной можете.

Может ещё и ссылку дашь на комментарии, в которых это утверждалось?

но со сменой деятельности и изучаемого предмета, то можно хоть 16 часов просидеть за учёбой
Тут метод помидора выручает

Я пользовалась этим методом и даже сейчас иногда пользуюсь, но мне проще сделать 5 помодоров на одну тематику, а потом 5 на другую, чем 10 по одноному и тому же.

Node.js — для извращенцев. Он модный только потому что его гугл распиарил.
То же касается большинства javascript фреймворков — просто тренд. Разработка гораздо более трудоемкая чем на класических серверных языках..
Потому и вакансий много — там где нормальный програмист сделает один работу — любителям яваскрипта надо два-три человека.

node.js- постоен на колбеках. Это просто непривычно после императивно водопадной архитектуры java. Но для расширения кругозора- очень рекомендую разобраться в асинхронной мадели програмимрования. Для этого не обязательно брать ноду- можно на С++ или C# писать как на ноде.

можно на С++ или C# писать как на ноде.
не треба :)))

Асинхронная модель может и хорошо для некоторых задач, однако же js не является тем языком на котором стоит писать серверную часть. Банально при некотором объеме проекта чтение исходников превращается в ад.

при некотором объеме проекта чтение исходников превращается в ад
Справедливо для любого языка при определенном радиусе кривизны рук

Однако же js так и остается скриптовым языком, что как бы намекает.

ну это намекает только на то, что он предназначен в первую очередь для браузеров, которые компилируемые языки вроде еще не воспринимают)

а ядро ноды, насколько мне известно написано таки на с++, который скриптовым как-то не является) и у меня чуйка , что именно благодаря с++овой части ноды, она и стала серверной платформой для джаваскрипта.
А серваков, написанных на чистом js вроде бы нету)

P.S. и вроде основное пприменение ноды — это всякие многопользовательские чаты и т.п. Т.е. такое, где нету тысяч строк кода.

у меня чуйка , что именно благодаря с++овой части ноды, она и стала серверной платформой для джаваскрипта.
Нода взлетела не потому, что написана на С++, а потому что, в отличие от того же .NET, в ноде из 5 строк кода можно собрать и запустить рабочий веб-сервер, который что-то делает. За то же время в .NET только успевает загрузиться Visual Studio.

Если бы ноду сделали таким же уе***ым и неповоротливым монстром как и .NET, то она бы никогда в жизни не взлетела, потому что люди хотят легковесность и быстрые итерации, а не качать 5 гигабайтную студию и ставить ее пол дня с тремя перезагрузками.

в ноде из 5 строк кода можно собрать и запустить рабочий веб-сервер, который что-то делает.

в PHP Тоже можно написать пять строк которые что то делают.

правильно, потому ни джава ни дотнет ему не конкуренты.
«Скорость разработки» — остается одной из важнейшей характеристик.

и как его не хают — а он живет и процветает (когда пахнет, а когда воняет — другой вопрос)

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

польза асинхронности для большинства сайтов весьма сомнительна. Не прикручивай клиентские фреймворки и не надо будет асинхронности.

польза асинхронности для большинства сайтов весьма сомнительна
для большинства сайтов да.
потому что большинство сайтов:
— просто отдают статику
— имеют малую посещаемость

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

но ладно там, ноде джс.

для подавляющего большинства сайтов, даже весьма нагруженных, даже предусматривающих интерактивную работу с пользователем и джава не нужна.
так что, она не для ПРАКТИЧЕСКОГО программирования?
в мусор ее? ;)

Не прикручивай клиентские фреймворки
? лисапеды писать для каждого сайта?

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

для нагруженых сайтов java как раз подходит лучше всего
не всегда.
зависит не только от наргруженности.

даже для нагруженных сервисов не всегда.

один из факторов — скорость и стоимость разработки.
джава сливает многим другим по этим двум характеристикам.

все ентерпрайз решения, все серверов приложений писаны на яве.
а кто вам сказал что они относятся к высоконагруженным?

и я уверен — вы напрочь не понимаете цель появления серверов приложений.

на хрена вообще выносить логику на клиента и тупо грузить ему браузер.
для высоконагруженных проектов — частенько самый простой способ разгрузить серверную часть.
И это в эпоху облычных вычислений с копеечным серверный железом.
с копеечным серверным железом? для высоконагруженных сайтов?
В отличие от мобильного которое вы напрЯгаете клиентскими фреймворками.
потому что для высоконагруженных сайтов — стоимость облаков совсем не копеечная получается.

но, как я уже догадался пару постов тому, вы очень мало что видели в жизни :) поэтому такие нелепые в наивности предпосылки для суждений.

я начал прграмировать когда вы еще под стол пешком ходили.
Так что не надо мне расказывать что где как нагружено.
Серверные вычисления всегда дешевле. И уж тем более дешевле труда програмиста.
Какой процент сайтов настолько высоконагружен что надо принимать какие то экзотические технологические решения?
А теперь возьмите процент от этого мизера где оправдано node.js. И получим социальные сети и то не весь функционал а только обмен мгновенными сообщениями.
И потом пользователю начхать какие там у вас проблемы с сервером — а вот на то что виснет мобильный браузер , пытаясь переварить какой нибудь ангуляр, ему не начхать.
Еще раз — нет никаких ТЕХНИЧЕСКИХ причин перекладывать логику стандартного веб приложения на клиента.

я начал прграмировать когда вы еще под стол пешком ходили.
и не знаете что «скорость разработки» в тьме случаев — главный ключ к успеху?
что сами ЯП развиваются чтобы помочь программистам писать быстрее?
Серверные вычисления всегда дешевле.
клиентские — вообще бесплатны для предоставляющего программу или услугу.
Какой процент сайтов настолько высоконагружен что надо принимать какие то экзотические технологические решения?
меньше 50ти % — точно. но не пара процентов чтобы считать потребность разгрузки серверной части — экзотической ситуацией.
особенно в промежуточных случаях — динамический, интерактивный UI.
А теперь возьмите процент от этого мизера где оправдано node.js.
самое массовое применение что встречается — отдача потокового медиаконтента. на хиленьком сервере прекрасно справляется.
второе массовое применение не видно конечному пользователю — микросервисы. опять же, на слабых ресурсах.
и получается что вы предлагаете обсуждать третий вид использования — REST сервер.
И потом пользователю начхать какие там у вас проблемы с сервером
да, ему начхать.
а владельцу сервиса — не начхать, стоимость разработки и поддержки — это расходы.

особенно во все более частом случае — когда нужно чтобы сервис наработал клиентскую базу, предоставляя услуги бесплатно, а через 3-5 лет только можно думать о монетизации.
но эти 3-5 лет — нужно вкладывать — деньги.

пытаясь переварить какой нибудь ангуляр, ему не начхать.
для использования ноды как рест сервиса — НЕ обязателен ангуляр на клиенте.
Еще раз — нет никаких ТЕХНИЧЕСКИХ причин перекладывать логику стандартного веб приложения на клиента.
нет никаких ТЕХНИЧЕСКИХ причин даже в ассемблере.
а пока есть человеческие и бизнесовые причины для использования ноды джс — его будут использовать.

Та много где можно написать 5 строк, которые что-то делают. Это радует на самом старте, а потом как-то монопенисуально.

Это радует на самом старте, а потом как-то монопенисуально.
было бы монопенисуально — осталась бы парочка ЯП, из универсальных.
однако — скорость разработки — все равно остается разной, и когда десятки тысяч строк, и когда сотни тысяч.
причем она еще и разная для одного и того же ЯП, в зависимости от KLOC

Многие языки появляются, многие исчезают или остаются в узкой нише, в том числе потому, что вся рулезность на относительно малом размере потом может вылезти боком.

глянул первую 20ку Tiobe

можете ответить без литья воды, без этих ни ап чем банальностей
1 что там делают PHP и JavaScript
2 сколько им лет
3 когда наконец их рулезность вылезет боком?

1. Tiobe никак не показывает количество проектов на JS с кодбейсом в гигабайты. 3 туда же.

уже 20-е место имеет рейтинг ниже 1%, а всего языков сотни.

Tiobe никак не показывает количество проектов на JS с кодбейсом в гигабайты.
а других проектов не бывает, только с гигабайтным кодебейсом?
3 туда же.
не понял ответа. куда — туда же?
уже 20-е место имеет рейтинг ниже 1%, а всего языков сотни.
то есть там, ниже 20го места языки с гигабайтным кодебейсом?

наверное я неправильно понял ваши тезисы:

Это радует на самом старте, а потом как-то монопенисуально.
...
вся рулезность на относительно малом размере потом может вылезти боком.

потом как-то — потом может вылезти боком — это про гигабайтный кодебейс?

а других проектов не бывает, только с гигабайтным кодебейсом?
Есть. Потому и не всегда нужна царь-пушка. Так же были и VB/Delphi/C++ Builder vs MSVC++. Что-то быстро сделать — у первых было преимущество, на проекте побольше разница нивелировалась. Встречал даже, что делфи программисты меряли выполненный объем работ в формах.
не понял ответа. куда — туда же?
Слабая типизация хотя бы ни на что не намекает?
Потому и не всегда нужна царь-пушка.
тогда к чему было?
Так же были и VB/Delphi/C++ Builder vs MSVC++.
да много всего было.
есть даже в инетах рассказ с подробностями как вторую версию продукта переводили с С++ на Эрланг и были очень довольны.

«А вот я знаю случай» — всегда можно сказать.

Слабая типизация хотя бы ни на что не намекает?
Потому что не всегда нужна царь-пушка.
тогда к чему было?
Ровно к тому, что сказал. Что веб сервер с хелло ворлд в 5 строчек — такое себе преимущество (У ноды ведь есть и другие), тем более, что это можно сделать и в других языках, даже если не в 5, а в 20.
Что веб сервер с хелло ворлд в 5 строчек — такое себе преимущество
для подавляющего числа проектов — самое то.

как раньше говорили:
да чтоб писать тебе всю жизнь на ассемблере даже «Hello world»!

так сейчас:
да чтоб тебе всю жизнь писать любые сайты на С++!

тем более, что это можно сделать и в других языках, даже если не в 5, а в 20.
и на ассемблере тоже это все можно сделать, Senior...

подумаешь, ну в 120 строчек.

не, тяжко все же порой общаться с коллегами, напрочь гуманитариями, лишенными всякой инженерной смекалки и практичности...

Тяжко общаться с истеричными личностями с избыточной фантазией, которые так и норовят придумать какой-то спор, когда его и в помине нет. Комплексы лечите, а то бомбит слишком.

а вам и вместо баша писать скрипты на плюсах.
авось попустит банальности выдавать за великие суждения :)

Конечно, банальность, я сюда не для философских речей с проповедями захожу). Хуже, когда люди не втыкают даже в банальность и начинают выискивать скрытый смысл и с ним же спорить.

вот вам веб-сервер в одну строчку, если уж помериться охота)

perl -MIO::All -e ’io(":8080«)->fork->accept->(sub { $_[0] < io(-x $1 ? «./$1 |» : $1) if /^GET \/(.*) / })’

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

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

и причина популярности что пыха, что хайпа вокруг ноды, что как раз что НЕ монописуально сколько строк нужно написать.
что заказчик как раз — прагматик, ему сроки выполнения и деньги важны.
а не хфилософские рассуждения о «статик типизации» и «проектах с кодбейсом в гигабайты»

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

будете дешево писать на ноде, получите дешевый же и результат.

Главная фишка ноды вовсе не в «вебсервере в 5 строчек», но если хотите, можете себя считать самым умным дартаньяном, мне не жалко

но если хотите, можете себя считать самым умным дартаньяном, мне не жалко
дартаньян это вы.
я в данном случае скорее одна из миллиона мух, которые не могут ошибаться.
будете дешево писать на ноде, получите дешевый же и результат.
миллионы мух в виде менеджеров и бизнесменов очень бы удивились такому откровению.
Главная фишка ноды вовсе не в «вебсервере в 5 строчек»
да, не в ней.
но оказывается что писать тоже самое на Vert.x выходит дороже.
и эксплуатация — дороже.
с тем же — результатом.

но вам перфекционистам гуманитариям конечно видней — как делать деньги на ИТ проектах.

ваши простыни текста забавны, продолжайте

вы фигню за фигней пишите — но забавен я, да.
это конечно :D

Если какие-то базовые вещи непонятны, разворачивать более сложные концепции мне лень. А вас все бомбит и бомбит.

Да ради бога, я дурак-гуманитарий, вы технарь-светоч, не вопрос, только не волнуйтесь так.

Если какие-то базовые вещи непонятны
это да — вам не понятна банальность — каждой задаче свой инструмент
и
себестоимость изделия в общем случае даже не коррелирует с доходностью
только не волнуйтесь так.
да вы еще и телепат, как положено истинному гуманитарию :D
это да — вам не понятна банальность — каждой задаче свой инструмент
да-да, «сама придумала, сама обиделась» )
JavaScript
вообще монопольный язык — хренас два его из бразузера уберут, а на серверах он очень интересен по двум причиннам — очень хорош когда куча разных событий надо хендлить, и все хотят иметь один язык на сервере и клиенте, а на клиенте — мнополия))
PHP — тоже имеет мало конкурентов, один из основных в его нише это Perl, но как то он потерял свою нишу а PHP очень сложно вытеснить так как для проксирования запросов к БД он очень хорошо подходит
очень хорош когда куча разных событий надо хендлить

откуда на сервере куча событий? Но что вы там их будете вешать не имея UI?

и все хотят иметь один язык на сервере и клиенте,
кто все?
сервер и клиент — разный функционал и соответственно оптимальны разные языки. Одинаковость языка не имеет никакого смысла. Яваскрипт на сервере это как php на клиенте.
откуда на сервере куча событий?
из интернета
кто все?
думаю полная фраза была:
все веб фронтэндщики
Одинаковость языка не имеет никакого смысла.
имеет, и еще какой. особенно для случаев когда и фронтэнд и бэкэнд пишут одни и те же люди.
Яваскрипт на сервере это как php на клиенте.
и php на клиенте был бы. если бы не модель вычислений его транслятора — запрос поднимает приложение, приложение отправляет ответ, и — умирает. на клиенте такая модель — нелепа.
из интернета
шо из интеренета? я вас спросил куда будете цеплять обработчик яывскриптовых событий событий, на какие обьекты?
все веб фронтэндщики
фигня
имеет, и еще какой. особенно для случаев когда и фронтэнд и бэкэнд пишут одни и те же люди.
эфективность технологии не зависит от того какие там люди. Посадите разных людей как и делаетсЯ в большнстве случаев. а если не таскать логику на клиента оо вообще не стоит вопрос одинакового языка. На фронтенде работают верстальщики и дизайнеры на бекенде програмисты.
такая модель — нелепа.
вообще то это модель веба а не PHP. На PHP вполне можно писать приложения где ничего не умирает. Например десктопные приложения.
На PHP вполне можно писать приложения где ничего не умирает. Например десктопные приложения.
В таком случае будут умирать пользователи. Либо от смеха, либо от старости.
будут умирать пользователи
либо разрабы, которые пишут софт на джаве или плюсах (застрелятся) — прикиньте IntelijIDEA написанную не на джаве а на пхп)))
эффективность технологии не зависит от того какие там люди.
из моих 20+ лет в программировании — все как раз наоборот.
столько умерло классных технологий из-за того что люди не потянули.

у Спольски даже есть пассажик — если не понял суть технологии за 15 минут — фигня она, и не взлетит.

На фронтенде работают верстальщики и дизайнеры на бекенде програмисты.
точно? а чего вы о каком-то «ангуляре» тогда говорите, если все так?
нет его, никакого «ангуляра» — На фронтенде работают верстальщики и дизайнеры на бекенде програмисты!
вообще то это модель веба а не PHP.
а то джавовское приложение — не умирает между запросами...
На PHP вполне можно писать приложения где ничего не умирает. Например десктопные приложения.
да, тут ваша правда — тьма десктопных приложений написана на php. сказывается ваша опытность: «я начал прграмировать когда вы еще под стол пешком ходили.»
убедили.

хотите сказать что после старта писать на ноде будет проще чем на пыхе?

В том то и дело, что не хочу

я про фому, а он мне про ерему) где я писал, что нода взлетела благодаря с++?
я писал только, что благодаря присутствию в ней с++ она стала серверной платформой для джаваскрипта, а про причины ее взлета я как бы не писал)

и да, я согласен, что взлетела она благодаря своей легковестности и простоте по сравнению с тем же дотнетом)

а не качать 5 гигабайтную студию и ставить ее пол дня с тремя перезагрузками.
для дот.нета кстати есть SharpDevelop (если под винду) — занимает мало, перезагружаться по десять раз не надо, основные дотнетовские языки поддерживает) правда не знаю, как насчет умного автодополнения и интеллисенса, но читал, что вроде оно там есть)
а не качать 5 гигабайтную студию и ставить ее пол дня с тремя перезагрузками
Это одноразовая операция. Для работы с любой технологией нужно один раз потратить время на установку IDE и настройку рабочего окружения.

ядро браузеров тоже не на JS, так что не показатель)

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

Node.js — для извращенцев. Он модный только потому что его гугл распиарил.
Так же читайте знаменитые книги автора:
«Java — людей с ООП головного мозга. Он модный только потому, что на нем под андроид пишут»,
«С# - для неудачников. Он модный только потому, что есть люди не осилившие linux»,
«Assembler — для процессоров. Он модный только потому, что они по другому не понимают».

С такими аргументами можно про любой ЯП сказать что он для кого-то, потому что гладиолусы. У каждого языка есть своя ниша, которую он занимает по праву.

Потому и вакансий много — там где нормальный программист сделает один работу — любителям яваскрипта надо два-три человека.
Сравнивать надо «нормального» с «нормальным», а не с любителями. Да и в зависимости от задачи и требований порой даже 100500 «нормальных» не сможет справится с ней только из-за того, что тот или иной язык не позволяет в силу своих возможностей и ограничений вписаться в требования, будь то по кол-ву часов на разработку, легкости последующего саппорта, скорости работы продукта и т.д.

Node.js — не язык программирования. Какие великие задачи решает Node.js?

Node.js — не язык программирования
И где же вы увидели, что я утверждаю, что Node.js это ЯП??
Какие великие задачи решает Node.js?
Не великие, вполне обыкновенные. Например, решите на своем любимом ЯП/Фреймворке задачу типа держать на одном физическом сервере, для начала скажем 1 миллион открытых вебсокетов, 50% которых шлют и принимают, скажем, хотя бы по 4кб данных каждую секунду. Для чистоты эксперимента, давайте допустим что всё это надо запустить на сервере с не более 32Гб оперативы и не более 20 ядрами CPU.

ну если придумывать экзотические задачи то можно оправдать что угодно.
Я имел ввиду ПРАКТИЧЕСКОЕ програмирование.
Дайте ссылки на такие сайты и вменяемое обьяснение почему там такое ограничение с железом?
Про процент таких сайтов я даже не спрашиваю -часто пишете социальные сети?.
я допускаю что в одном из тысяч случаев может быть полезен node,js но тогда нужно говорить об узкоспециализированом назначении а не об широком использовании.

вменяемое обьяснение почему там такое ограничение с железом?
посмотрите тарифные пакеты для VPS/VDS.
Про процент таких сайтов я даже не спрашиваю?
и правильно делаете. Потому что обычный такой эл магазин — может бомбиться тьмой мелких запросов. если — REST и UI рисуется браузером.
а если еще нужно раздавать какие-то бинарные файлы...

так что не спрашивайте — и так и не узнаете что оно такое:
ПРАКТИЧЕСКОЕ программирование

Потому что обычный такой эл магазин — может бомбиться тьмой мелких запросов. если — REST и UI рисуется браузером.
то есть изврат на сервере оправдывается извратом на клиенте — на хрена там рисовать UI которое будет тупо тормозится на мобильных платформах. И с каких пор бинарные файлы нодой стали раздаватся лучше чем nginx?
вы ж писали про мелкие запросы а тут бинарные файлы. Откуда в эл магазине рзадача бинарных файлов милионами — отдельный вопрос.
И что мешает поставить выделенный сервер раз уж такой посезаемый магазин а значит небедный магазин.? Это гораздо дешевле чем оплачивать месяцы мучений раработчиков,
Электронный магазин будет на порядок эфективнее работать без клиентских яваскрипт фреймворков, REST и всего остального что явно от лукавого.

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

Это практическая задача. Которая реально существовала и для которой специально проводились тесты «что лучше юзать».

Дайте ссылки на такие сайты и вменяемое обьяснение почему там такое ограничение с железом?
Потому что такое железо есть и оно стоит определённых денег. Чем больше CPU/RAM, тем больше ежемесечных затрат на инфраструктуру. Никто в здравом уме не будет покупать 100500 серверов на амазоне, чтобы удовлетворить прожорливость джавы со всеми ее фабриками фабрик и прочим «энтерпрайзом». И все ограничения диктуются финансами и возможностями хостинга. Вот пример из реальной жизни: www.digitalocean.com/pricing.
Про процент таких сайтов я даже не спрашиваю -часто пишете социальные сети?.
Сейчас элементы социальных сетей пытаются впихнуть практически везде. Да и такие нагрузки вполне реальны и не для соц. сетей. Откройте для себя рынок Китая или Индии, например.
Например, решите на своем любимом ЯП/Фреймворке задачу типа держать на одном физическом сервере, для начала скажем 1 миллион открытых вебсокетов, 50% которых шлют и принимают, скажем, хотя бы по 4кб данных каждую секунду.
В свое время решал на своем любимом C# (за несколько лет до появления ноды, кстати)

Приношу вам мои глубочайшие соболезнования.

Сильно толсто, у меня аж жыр с монитора потек.

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

Деразайте.

нода отсосет у дотнета по большинству метрик.
Прям вижу сенсационные заголовки статьи на доу:
«Дотнет уходит в отрыв: приложение на дотнете уверенно опережает ноду по количеству 500 ошибок. Выбирайте дотнет, до в 10 раз больше 500 error-ов!»

эм.... я как бы ноду люблю, и все такое — но в данный момент вы очень сильно ошибаетесь

Без ограничения на макс. кол-во коннектов где-то в районе 500-600к время ответа начнет очень сильно расти. Если такое ограничение поставить на 1000к, то после 15-20 минут работы 15% запросов по вебсокетам будут «улетать в трубу». Юзалась либа SignalR. При аналогичном числе коннектов для ноды проблем не было, начинались лишь при достижении кол-ва подключений в 1900к+.

Это говорит о криворукой реализации .NET версии вашего сервиса и, возможно, библиотеки SignalR, потому что на пряморукой реализации там не будет никаких проблем.

Ради прикола, расскажите, какая, по вашему мнению, фича ноды даст ей преимущество перед дотнетом во время выполнения?

Если пресловутая асинхронность и однопоточность, то могу напомнить ньюфагам, что асинхронный IO появился в дотнете еще в первой версии в далеком 2000 году.

Причем, товарищам из MS тогда хватило смекалки все везде запилить на старых добрых колбеках (APM в их терминологии).

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

добавлю к ответу Alexander Kureniov

Node.js занял ту нишу, в которой должен был жить Erlang

Это вообще «удивительная» история про то как тупит ИТ отрасль — такой инструмент должен был появиться давно, однако...

сейчас в эту нишу еще лезет GoLang.

Node.js занял ту нишу, в которой должен был жить Erlang

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

Насчет Go — не знаю, как там обстоят дела (хотя таки думаю изучить этот вопрос, ибо Го мне интересен), и по-моему у него больше шансов (по сравнению с нодой) поконкурировать с эрлангом в этом плане.

она все равно уступает эрлангу в плане устойчивости к большому количеству одновременных соединений
вполне может быть.
Эрланг ВМ проектировалась жестко для этой задачи. ЯП там почти вторичен.
Плюс эрланг насколько знаю можно на несколько ядер распределить или распаралелить, Плюс эрланг насколько знаю можно на несколько ядер распределить или распаралелить
да, Эрланг ВМ года с 2009(или 2011?) реально многопоточный.
До этого были «зеленые потоки», как в ранней JVM
а нода вроде только на одном работает.
да.
и все равно несложно нарваться на утечки памяти.
вот в этом проблемка. которая решается у Эрланга и GoLang с помощью семантических сущностей ЯП.
(Swift и Rust пошли еще дальше, но это совсем оффтоп)

Можно сказать — зря выбрали js для Node :)
еще и потому что про «читабельность» колбеков уже писали.
Может быть раз уж так, Lua была бы лучшее...
OpenResty вроде штука по многим параметрам круче Node.js

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

Можно сказать — зря выбрали js для Node :)
Может быть раз уж так, Lua была бы лучшее...
я что — если появиться аналогичная ноде платформа на Lua, то я буду тока всеми руками и ногами за)

Tcl существует с замшелых 80х, асинхронщина и event-driven во все поля, AOL Server как бы намекает на масштабируемость, метапрограммирование в полный рост и Lua-подобный синтаксис (хотя это скорее у Lua Tcl-подобный).

ну вобще да про AOL Server слышал, но это тикль, а не луа)

ua-подобный синтаксис (хотя это скорее у Lua Tcl-подобный).
вообщето, ИМХО, синтаксис у тикля и луа довльно разный. И Tcl насколько помню (одно время пробовал его изучать) больше похож на bash или lisp. В то время, как у Lua синтаксис больше на руби смахивает с end-ами в конце каждого блока.
больше похож на bash или lisp

Tcl не похож на Bash. Bash не похож на LISP (ни на один). LISP (ни один) не похож на Tcl.

Насчёт Lua — ну, мне так кажется. Не настаиваю никоим образом.

просто у тикля есть всякие аргументы в виде квадратных скобочек, вроде в баше команды — тоже нечто похожее а-ля терминал (с квадратными скобками и аргументами в виде -арг1 -арг2 и т.п.). Хотя сам на баше не кодил никогда — может там синтаксис действительно другой.
А насчет лиспа — просто читал где-то, что у него (у тикля) синтаксис тоже непривычный и чем-то похож на лисп. Ну и на википедии написано, что тикль испытал влияние шелла и лиспа. (баш же шелл-оболочка насколько я понимаю).

Tcl похож на LISP (прежде всего, на CL) семантически — тем, что это метаязык; но, в отличие от CL’а, Tcl оперирует строками кода, а не его AST — что делает его резко менее производительным, но в то же время (да простят меня лисперы) более читаемым для гуманоидов.

причем насколько я слышал, она все равно уступает эрлангу в плане устойчивости к большому количеству одновременных соединений (т.е. эрланг вроде все равно бОльшую нагрузку держит).
С эрлангом точно сказать не могу, но думаю, что вполне реально. Однако так же многое зависит от реализации.
Плюс эрланг можно на несколько ядер распаралелить, а нода вроде только на одном работает.
И эрланг, и нода отлично распараллеливаются. Просто у них немного разыне подходы. В эрланге используют акторы (как и в Go). В ноде обычно юзают асинхронность и распараллеливание при помощи множества воркеров, хотя, если захочется можно и имплементировать нечто похожее на акторы, т.к. на JS можно писать в стиле «функционального программирования».
многое зависит от реализации

Для Erlang выбор не очень большой — BEAM да LING по сути. В среднем по больнице масштабировать всё равно проще.

да LING по сути
Имеется ввиду Xen — erlangonxen.org ? :)
А как Erjang? или это «мертвая» затея портрировать эрланг на джаву?
Имеется ввиду Xen

Реализация виртуальной машины Erlang, запускаемая на Xen, да.

А как Erjang?

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

эрланг вроде все равно бОльшую нагрузку держит

Держит.

эрланг насколько знаю можно на несколько ядер распределить или распаралелить

Можно.

В ерланга, как функционального языка мягко говоря, не совсем привычный синтаксис. То ли дело простой javascript который суют куда ни попадя.

ерланга, как функционального языка

Я бы с большой осторожностью называл Erlang функциональным. Он императивен, каждая нода тянет состояние, сайд-эффекты некотролируемы. «Actor-based OO language с некоторой поддержкой функционального стиля» было бы корректней.

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

Т.е. я бы сказал, что эрланг это гибрить функциональной и логической парадигм с элементами императивщины и ооп.

З.Ы. может просто думаете, что эрланг императивщина потому, что на эрланг-машине работает такой язык как Elixir. который имитирует синтаксис Ruby? (но именно иммитирует, а не является неким «руби-для-эрланга»). И хотя есть попытки написать интерпретаторы луа (Luerl) или PHP (натыкался на такое) для эрланг-машины, но насколько я понимаю такие проекты сугубо эксперименталиные и эти эти языки вряд ли в ближайшее время вряд ли получат такое же признание на эрланг-вм как эликсир.

Я не утверждал, что императивным его делает наличие сайд-эффектов. Императивным его делает то, что программы на Erlang — это последовательности действий. Сравни это со Scheme, Haskell, Clean, с языком шаблонов C++, где программа — это композиция функций, а для задания порядка выполнения нужны явные языковые механизмы.

Да, строго говоря здесь есть тонкости с точки зрения Erlang-рантайма как реализации модели акторов, но сами функции в Erlang совершенно императивны, а язык очень далёк от функционального стиля.

в функциональных языках остался бы один хаскель и то без монад

Я специально написал «неконтролируемы». В Haskell есть сайд-эффекты, но они (если программист не жаждет грязных хаков) контролируются системой типов. Даже в Agda есть сайд-эффекты, хотя она не только чиста, но и тотальна.

корни у эрланга прологовские

Корни. Erlang появился как модификация Prolog’а, но современный Erlang от своего предка унаследовал только ошмётки синтаксиса.

эрланг это гибрить функциональной и логической парадигм

Нет. Поддержки логической парадигмы (что бы это ни значило) в Erlang нет, насчёт функциональности я написал выше. На функциональные логические языки можно посмотреть здесь.

может просто думаете, что эрланг императивщина потому, что на эрланг-машине работает такой язык как Elixir. который имитирует синтаксис Ruby?

Нет, не думаю.

с языком шаблонов C++, где программа — это композиция функций, а для задания порядка выполнения нужны явные языковые механизмы.
но это же не значит, что с++ является функциональным языком.
Это во первых, а во-вторых, в эрланге насколько я понимаю все-таки используется такой-же подход, как и в других декларативных языках: «описать, что требьуется получить». А в императивных — описывается порядок действий для достижения нужного результата (в эрланге вроде такого подхода нет).
Хотя возможно стиль программирования на эрланге действительно больше напоминает стиль программирования в императивных языках, чем стиль программирования в том же хаскеле или схеме.
Я специально написал «неконтролируемы»
возможно, я пока не вникал в тонкости эрланга. Могу только предположить, что это один из недостатков платформы OTP и возможно самого эрланга как языка. И мне кажеться это не столько недостаток, сколько особенно эрланга связанная с принципом «не страшно, если процесс упал» (не помню дословную формулировку — вроде «позволь процессу умереть» или что-то в таком духе). из-за чего Erlang иногда полушутя расшифровуют ка ERrorLANGuage)

B как по-мне более существенным недостатком эрланга как языка являются проблемы при работе со строками и вычислениями (хотя в последних версиях вроде что-то делают для улучшения в этом плане).

Поддержки логической парадигмы (что бы это ни значило) в Erlang нет, насчёт функциональности я написал выше.
ну мне казалось, раз есть ошметки синтаксиса, то возможно есть и что-то из остатков парадигмы)
в общем согласен, что насчет логической парадигмы в эрланге я немного загнул. Просто не думаю, что язык, родитель которого был декларативным языком, вдруг стал императивным — это ж все-таки разный подход к программированию, насколько я понимаю.
На функциональные логические языки можно посмотреть здесь.
ну в принципе да) хотя из этогот списка насколько знаю сугубо функционально-логическим явлется Mercury. А вот Mozart и Oz вообще чуть ли не все существующие парадигмы поддерживают)
так что на самом деле большинство языков (в том числе и эрланг) являются мультипарадигмальными (или мультипарадимгменными). Чисто функциональных или чисто императивных единицы)
но это же не значит, что с++ является функциональным языком.

Нет, не значит. А язык шаблонов С++ (Тьюринг-полный, вообще говоря) — является.

А в императивных — описывается порядок действий для достижения нужного результата (в эрланге вроде такого подхода нет).

Есть, конечно. Вот, скажем:

cwd(Arg, Ctl, St) ->
    assert_valid(Ctl, St),
    Dir = rel_name(Arg, St#cstate.wd),
    assert_exists(Ctl, St#cstate.rootwd, Dir, directory),
    rsend(Ctl, 200, "new directory \"" ++ abs_name(Dir) ++ "\""),
    St#cstate { wd = Dir }.

Порядок действий как живой.

один из недостатков платформы OTP

Это не имеет отношения к OTP.

И мне кажеться это не столько недостаток

Я и не говорил, что это недостаток. Не нужен в Erlang’e контроль за сайд-эффектами. Это просто качество языка, отдаляющее его от ФП.

Просто не думаю, что язык, родитель который был декларативным язык, вдруг стал императивным

Почему вдруг? Erlang’у 29 лет, между прочим.

А язык шаблонов С++ (Тьюринг-полный, вообще говоря) — является.
ну может быть) ибо, если не ошибаюсь, разные шаблонизаторы — это именно декларативщина. т.е. языки шалонов для др. языков тоже скорее являются функциональными, нежели императивными.

и, кстати, я читал про пролог, что он не является полным по Тьюрингу, а основан на другой умной «хрени»)

Почему вдруг? Erlang’у 29 лет, между прочим
но он долгое время был «закрытым» языком и до сравнительно недавнего времени в нем мало что менялось.

А так я не спорю, что в эрланге есть от императивного подхода. Просто эрланг достаточно специфичен, чтобы его просто взять и причислить к императивным языкам)

не является полным по Тьюрингу, а основан на другой «умной хрени»

Prolog Тьюринг-полон.

Тьюринг-полнота не говорит о том, на чём язык основан; это просто его качество (как и, например, Чёрч-Россеровость). Не обязательно хорошее качество, и не обязательно изначально предполагаемое.

эрланг достаточно специфичен, чтобы его просто взять и причислить к императивным языкам

И тем более — к функциональным, с которыми у него очень мало общего.

Prolog Тьюринг-полон.
хм... может я с каким-то другим языком спутал (наверное это про один из эзотерических языков говорилось, про которые я как-то читал).
Но вообще я — пас, я не вникал в подробности полноты по Тьюрингу.
И тем более — к функциональным, с которыми у него очень мало общего.
только его почему-то относят именно к функциональщине и делают по нему доклады на разных митапах и конфах по функциональному программированию...
только его почему-то относят именно к функциональщине и делают по нему доклады на разных митапах и конфах по функциональному программированию...

А к чему его отнести? С учётом модели акторов, опять же, ближайшими семантическими родственниками Erlang будут Smalltalk (фактически мёртв), Io (непопулярен), JavaScript (насколько сильно программисты на JS любят изучать что-то новое, видно по этому топику) и, например, Scala + Akka.

А с функциональщиками удобно — если человек полез с ФП, скорее всего он будет рад послушать про что угодно клёвое, да и рассказать ему будет что. Вот и примазались.

Smalltalk (фактически мёртв), Io (непопулярен), JavaScript (насколько сильно программисты на JS любят изучать что-то новое, видно по этому топику)
Io кстати довольно любопытный язык, жаль что непопулярен (ну и он больше гипотетическим потомком эрланга явлляется, ибо он довольно молодой насколько я знаю). У смолтолка есть реализация Squeak, которая вроде как поддерживается, хотя по большому счету смолток видимо дейсмтвительно умер.
Вот и примазались.
я думаю, что примазались все-таки не просто так:
1. переменные в эрланге неизменяемые (Имеются ввиду именно переменные, что с большой буквы пишуться вроде X, Y, Head, Tail и т.п, а не атомы. А это насколько знаю характерно именно для функциональщины). Ну и всякие кортежи и списки, которые насколько я знаю являются неизменяемыми.
2. отсутствие циклов. (Или циклы в эрланге всё таки присутствуют?). Присутствие рекурсии (классический пример — програма нахлждения факториала или фибонначи), в т.ч. и хвостовой.
(насколько я знаю в императивных языках программирования рекурсия как таковая отсутствует — она имитируется с помощью циклов и временных переменных, а в функцинальных языках отсутствуют циклы).
3. классический пример программы нахождения числа фиббоначи
fib(1) -> 1;
fib(2) -> 1;
fib(N) -> fib(N — 2) + fib(N — 1).
по сути является математическим определением самой фиббоначчи. Что насколько мне известно характерно именно для функцианальщины, а ни как не для императивных языков.
4. ну и там функции высшего порядка, анонимные функции, всякие свертки (fold, foldr), генераторы списков, сопоставление с образцом и т.п. вещи, которые по-моему характерны именно для функционального программирования.
насколько я знаю в императивных языках программирования рекурсия как таковая отсутствует — она имитируется с помощью циклов
да ладно
4. ну и там функции высшего порядка, анонимные функции, всякие свертки (fold, foldr), генераторы списков, сопоставление с образцом и т.п. вещи, которые по-моему характерны именно для функционального программирования.
и при этом есть (практически) в любом мейнстривомом языке (ну ок, кроме патер матчинга)
при этом есть (практически) в любом мейнстривомом языке
у них это все пришлое)
Вот счас в джаву тоже активно функциональщину пихают)
---
И еще, насчет ООП и императивщины:
1. ООП в том или ином виде есть практически во всех более-менее известных функциональных языках: Scala, F#, Ocaml, Lisp есть ООП и всякие элементы императивщины (в ф-шарпе насколько знаю можно пистать в стиле сишарпа например)
ООП даже в хаскеле есть — www.rubendegooijer.nl/...13-04-06-haskell-oop.html . :)
2. В той же Scheme насколько знаю вполне можно писать программы в процедурном (императивном) стиле (несмотря на то, что схема считается более функциональным языком, чем лисп) — по крайней мере судя по SICP.

так что на самом деле идет активное проникновение наработок ФП в императивные и ооп-языки, и наоборот — наработок ООП в функциональные языки) Поэтому на практике, как мне кажеться, грань между ООП-языками и ФП-языками становиться все более размытой.

Lisp

Крайне не рекомендую так писать. LISP — это не язык, а очень немаленькое семейство языков с существенно разными свойствами. В Scheme ООП нет, в CL — есть (причём одно из мощнейших на сегодняшний день).

грань между ООП-языками и ФП-языками становиться все более размытой

Этой грани вообще нет. ООП — это про динамическую диспетчеризацию, ФП — про проектирование композицией функций, чистое ФП — про ссылочную прозрачность. Нельзя сказать, что эти вещи полностью ортогональны, но и исключительными их назвать тоже нельзя.

ООП даже в хаскеле есть

ООП в Haskell есть и без этого. Просто другое.

Крайне не рекомендую так писать.
ну я в интернетах видел, что пишут и так и так)
В Scheme ООП нет, в CL — есть (причём одно из мощнейших на сегодняшний день).
ну в самой схеме из каробки его действительно нет, но думаю его вполне можно реализовать. А так согласен)
Этой грани вообще нет.
т.е. хаскель уже по сути не является языком функционального программирования?
Нельзя сказать, что эти вещи полностью ортогональны, но и исключительными их назвать тоже нельзя.
ну я примерно о том же — и ООП и ФП вещи хоть и разные, но не настолько, чтобы что-то из них могло полностью заменить другое.
ООП в Haskell есть и без этого. Просто другое.
знаю) просто при поиске примеров первой попалась именно этот вариант хаскельного ооп, а вот про родное ООП в хаскеле и лиспе пока мало что знаю (знаю, что оно есть).

З.Ы. кстати, можно ли совет? Вот я думаю, какой из языков лучше изучать: erlang, haskell или clojure? ну чтобы не распыляться? или лучше сперва изучить от корки до корки SICP со Scheme?

хаскель уже по сути не является языком функционального программирования?

Является. Отсюда просто не следует, что в нём не может быть ООП.

лучше сперва изучить от корки до корки SICP со Scheme?

SICP — книга простая и очень полезная. Изучать её не надо, но прочитать хотя бы раз стоит любому программисту.

какой из языков лучше изучать: erlang, haskell или clojure?

Любой. Или все сразу. С Erlang’а проще всего начать, что-то полезное на нём можно написать с минимумом подготовки.

А можно вообще взять SICP и прорешать все задания сразу на всех четырёх языках — Scheme, Erlang, Haskell, Clojure. А если хочется закрепить результат, то сделать то же самое ещё и с паттернами GoF (там перед каждым паттерном есть задача, которую он решает — просто решить ту же задачу, но средствами выбранного языка). Очень мозги прочищает, вообще говоря.

Является. Отсюда просто не следует, что в нём не может быть ООП.
а к чему же тогда фраза
Этой грани вообще нет.
, когда я говорил о гране между языками (хаскель- функциональный, джава — ооп, пролог — логическое программирование), а не между поддерживаемостью парадигм разными языками (хаскель и лисп поддерживают ооп, последняя джава — вроде как поддерживает функциональные вещи)?
А можно вообще взять SICP и прорешать все задания сразу на всех четырёх языках — Scheme, Erlang, Haskell, Clojure.
о, интересная идея, спасибо)
кстати я как-то натыкался на инфу о том, что есть проект по адаптации примеров из SICP под Clojure, правда как я понял, что пока это в процессе.
Очень мозги прочищает, вообще говоря.
полностью согласен)
гипотетическим потомком эрланга

Скорее потомком Smalltalk и Self.

переменные в эрланге неизменяемые

Не все.

в императивных языках программирования рекурсия как таковая отсутствует

Нет. Крайне рекомендую почитать SICP, в первую очередь главу, посвящённую итеративным и рекурсивным процессам и функциям.

Присутствие рекурсии (классический пример — програма нахлждения факториала или фибонначи), в т.ч. и хвостовой.

Хвостовая рекурсия — это просто эквивалентная форма записи рекурсивного определения, позволяющая выполнить оптимизацию определённого рода (TCO).

Отдельно стоит отметить, что в современном Erlang рекомендация к использованию хвостовой рекурсии отсутствует.

в функцинальных языках отсутствуют циклы

В чисто функциональном языке без деструктивного присваивания циклов нет. Если деструктивное присваивание есть — есть и циклы (см. loop macro в CL, например).

является математическим определением самой фиббоначчи. Что насколько мне известно характерно именно для функцианальщины, а ни как не для императивных языков

«Характерно» — не значит «является определяющим признаком». Вот как выглядит функция расчёта n-ного числа Фибоначчи на C++ с помощью библиотеки паттерн-матчинга.

функции высшего порядка

Есть в практически любом современном популярном ЯП.

анонимные функции

Есть в практически любом современном популярном ЯП.

всякие свертки

Есть даже в C++. За счёт слабой системы типов, функция более специальная, чем могла бы быть, но тем не менее.

генераторы списков

Есть, например, в Python, в несколько ином виде — в Ruby, Yorick, даже в C#.

сопоставление с образцом

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

характерны именно для функционального программирования

Опять же, «характерно» — не значит «является определяющим признаком». Да, Erlang разделяет с функциональными языками ряд характерных конструкций, но проектирование и программирование на нём требуют отличных от функциональщины подходов.

Опять же, «характерно» — не значит «является определяющим признаком».

хорошо, можно назвать определяющий признак функционального языка (ну или список определяющих признаков, если их несколько)? ну и аналогичные определяющие признаки современного императивного языка? ну чтобы точно сказать — это 100% функциональщина, а это — 100% императивщина.

насчет остального

Есть в практически любом современном популярном ЯП.
по-момеу, сейчас практически все есть в любом современном мало-мальски популярном ЯП.
Вывод: разделение языков на «функциональные языки» и на «императивные языки» за редким исключением (типа хаскеля) ИМХО малоактуально и больше относиться к разговорам типа: «Ну в языке XYZ это тоже есть, ну и что?»

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

определяющий признак функционального языка

О, это крайне срачегенерирующий вопрос. Я бы сказал, что основные определяющие признаки — декларативность (отсутствие неявного указания порядка выполнения в коде) и проектирование функциональной зависимостью и композицией. К чистому функциональному языку добавляются ещё ссылочная прозрачность и контроль сайд-эффектов.

100% императивщина

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

разделение языков на «функциональные языки» и на «императивные языки» за редким исключением (типа хаскеля) ИМХО малоактуально

Ну, нет. Проектирование в C++ и C# имеет много общего, в C++ и, например, OCaml — мало. Это не вопрос сахара, это вопрос семантики.

пока еще не решил буду ли я его в серъез изучать

Не надо его изучать. Поставил, завёл, написал ping pong на 10k процессов, прочитал книгу Армстронга and you’re good to go — в случае чего ты сможешь им воспользоваться. Подводные камни всё равно покажет практика.

Не надо его изучать. Поставил, завёл, написал ping pong на 10k процессов, прочитал книгу Армстронга and you’re good to go — в случае чего ты сможешь им воспользоваться. Подводные камни всё равно покажет практика.
А как насчет «Learn Yourself Erlang»?
Просто во время отпуска с телефона почти пол книжки прочитал (как раз до главы с OTP) — хорошо пошла — но теперь интересует, насколько качественно там подан материал.

Ну и интересно насчет Elixir/Phoenix, если есть реальный опыт.

А как насчет «Learn Yourself Erlang»?

Не читал, но думаю что подойдёт не хуже. Erlang простой язык, это задачи которые с его помощью решаются сложные :)

насчет Elixir/Phoenix, если есть реальный опыт.

Не пользовался, увы.

декларативность (отсутствие неявного указания порядка выполнения в коде)
ну так если не ошибаюсь пример эрланговской функции нахождения факториала или n-ного числа фиббоначи как раз соответсвует этому:

-module(fact).
-export([fac/1]).

fac(0) -> 1;
fac(N) when N > 0, is_integer(N) -> N * fac(N-1).

это ж по сути формулировка условия с водными параметрами (мы знаем, что что фактериал нуля равен единицы, и что факториал любого числа является произведением этого числа и всех предыдущих).

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

и еще, в эрланге можно организовать ленивые вычисления — books.google.com.ua/...ции в эрланге&f=false

О, это крайне срачегенерирующий вопрос.
а вообще да)
Ну, нет. Проектирование в C++ и C# имеет много общего, в C++ и, например, OCaml — мало. Это не вопрос сахара, это вопрос семантики.

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

Поставил, завёл, написал ping pong на 10k процессов, прочитал книгу Армстронга and you’re good to go — в случае чего ты сможешь им воспользоваться. Подводные камни всё равно покажет практика.
вот тут соглашусь)
пример эрланговской функции нахождения факториала или n-ного числа фиббоначи как раз соответсвует этому

А множество других функций — нет.

вот что это такое не знаю :(

Смотри:

-- return the last ten lines of a file
tail10  = drop =<< subtract 10 . length

Или вот:

-- lines not matching the regular expression "[bf]oo" from a file
grep_v  = filter (not . regexBool "[bf]oo")

Видишь — неявной последовательности действий «выполняем сверху вниз» тут нет, есть только зависимость функций друг от друга и их композиция.

broadcast(Msg, [Pid|Pids]) ->
    Pid ! Msg,
    broadcast(Msg, Pids);

А здесь — есть (сначала отправляем сообщение на Pid, потом рекурсивно вызываем broadcast).

в эрланге можно организовать ленивые вычисления

Где угодно можно организовать ленивые вычисления.

Пример факториала как по-мне имеет больше сходства с ML-языками, чем с Си, к примеру.

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

ясно. спасибо за объяснения) будем разбираться)

Один дядечка-профессор вот что говорит про Erlang:

Programming languages usually support a small number of paradigms. For example, Java supports object-oriented programming, Haskell supports functional programming, Erlang supports multi-agent concurrent programming, and Prolog supports logic programming.

Хорошо говорит.

вообще-то одно другому не мешает) ибо можно взять джаву — на бэкэнд, а джаваскрипт — на фронтэнд, и стать таким образом фуллстэк-разрабом)

а так в целом: без джаваскрипта сейчас никуда, поэтому перспективнее будет изучать javascript и ноду.

Если с чистого листа начинать, то не лучше ли стать фуллстэком на Angular/Ember/React+Node? Один синстаксис, похожие подходы.

согласен) но если топикстартеру нравиться джава и он ее уже начал изучать, то может как вариант джава+джаваскрипт ему вполне подойдет?)

Будем реалистами: нет людей, которым нравится и то, и другое ))

Зато любители .Net + JS попадались)

Тут ничего не могу сказать: ничего не знаю про .net )

значит пусть чел сам решает, что ему реально нравиться — нода или джава, и учит ее) ибо и джава востребована и нода набирает популярность.

И кстати, есть реализация ноды на jvm — nodyn.io )

Ну мне нравится, например.)

Чушь.

NodeJS и Javascript вообще. Пик популярности «Javascript everywhere» еще впереди, и есть смысл этим воспользоваться, начав его изучать и использовать уже сейчас.

Always bet on JavaScript — вибирай NodeJS :-)

Працюю з метеором, не бачу перспектив в вакансіях поки що. З нодом веселіше.
Якщо є рік часу, я б на твоєму місці розподілив би. Подивився б до Джави декілька місяців. Потім до Нода, але спершу просто з JS розібратися. А там вже як карта ляже. Попадуться курси?! Підеш на курси. Попадеться робота?! Підеш на роботу.

А если даже не пойду на работу, то буду фрилансить
Не все так просто.
А на следующий год хотелось бы пойти в бульшую компанию (SoftServe) на курсы Java
Если ты уже найдешь работу и будешь иметь ~год опыта в JS/фронтенде/чем-то там еще, тебе уж точно не захочется идти на курсы в крупную компанию
Совет: попробуй и то, и то в более-менее чистом виде (без метеоров, ангуляров в случае с JS; Spring+Hibernate в случае с Java, например). JS — очень специфический язык.
... и учить MeteorJS
Учить MeteorJS точно не надо. Лучше учить просто JS. Ибо изучая метеор ты даже вряд ли научишься нормально прогать как JS в общем, так и на node.js в частности. Если будешь учить JS, то писать на метеоре не составит труда: там 89% — чистый фронтенд + 10% знаний о том, как работают запросы к монге.

Если учить Java, то, имхо, лучше смотреть в стороно андроида, ибо как писали ранее отличное от андроида на джаве это в большинстве случаев бородатый энтерпрайз, процентов 70 из которого это ПО для банков писаное индусами.

Не все так мрачно, есть и не ентерпрайз и не индусы , хотя такие проекты в меньшинстве

Я же по сути это и написал. Хороших проектов на джаве (не андроид) надо поискать.

сейчас читаю уроки по JavaFX
Зараз же перестань!
Йдеш сюди, читаєш і пишеш хелловорлди доки не позеленієш, якщо щось не зрозуміло з доки, переходиш сюди, дивишся, повертаєш до доки і читаєш далі. В цього ж товариша дивишся уроки по Hibernate, далі що не зрозуміло, підглядаєш на їх сайті, пишеш простий CRUD бібліотека/аптека/продаж квитків, морду прикрутиш на якомусь жабоскриптовому фреймворку і спокійно йдеш на джуна. А ще якщо покриєш все тестами — ціни тобі не буде.

Джава = большой энтерпрайз в большом офисе с неиллюзорными шансами попасть на проект, который был рожден 10-летней назад в солнечном Бангалоре. Зато стабильнасць и корпоративная культура! На фриланс такие проекты не отдают в принципе.

JS/Node = модно, стильно, молодежно и вообще все cool kids щас на этом пишут. Спектр задач сильно разнообразнее Java, да и на фрилансе этого добра действительно навалом.

Тут скорее нужно ориентироваться на то, чем больше хотелось бы заниматься. Если хочется в бодишоп — Java, если чего-нить поинтересней — нода. Если фриланс, то однозначно нода. Востребовано и то, и другое, и вряд ли куда-то денется в ближайшее время. Миллиарды строк энтерпрайз-кода на Java кто-то должен поддерживать, а для фронт-энда альтернативы JS пока толком не придумали.

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

и нет ни малейшего понимания:
— что к таким зарплатам люди добираются за лет 5 минимум. или — очень талантливы.
— что обилие вакансий — синьорских. меньше половины — мидловых, то есть тоже твердые знания + стаж 3+ лет. а джуновских то вакансий — считай и нет.

ситуация примерно как в 90ых массово шло юношество в юристы да экономисты. типа сытные профессии. на деле же большинство дальше «менеджера торгового зала» не продвинулось.

я уже встречаю людей потратившихся на «Шаги», курсы, и после года поиска работы — с трудом нашедших работу «QA trainie»

кстати, и с Руби ведь так.
Был с пару месяцев на руби тусовке, и там был доклад на тему как «руби комьюнити может помочь новичкам». когда дошло до вопросов-рассказов с зала — все истории делились на два вида:
я руби программист несколько лет. учил как-то знакомого. и — ничего не вышло
я учился программировать на руби, друзья помогали, и ... — нашел наконец работу тестировщиком, в компании пишущей на php

рядом парень хмыкнул, и мне шепнул, да, я вот тоже, только тестером смог устроиться недавно....

Интересней и разнообразней — это веб формочки на ангуляре строчить?

Ну можно формочки строчить, можно геттеры и сеттеры, один хер все тлен.

Не все упирается в веб формочки. Рутинная работа есть везде, и инетресная есть везде.

Это надо было на уровень выше ответить)

Это и к тому и к тому)

ок) Мне само по себе это противопоставление непонятно. Лично мне не нравится фронтенд ни в каком виде, кому-то наоборот

Аналогично, не люблю фронт-энд ни в каком виде.

С выходом HTML 5, даже формочки интересно стало писать :)
Сейчас очень много интересных вещей можно делать, 2d игрульки на канвасе писать, parallax эффекты создавать, на чистом CSS3 карусели кодить.
Другое дело, что в реальной разработке, за которую платят деньги, это нафик никому не нужно и все сводится к написанию формочек на ангуляре :)

Сиськи на HTML5 — это была отличная демонстрация)

и это тоже.
равно как разработка на Java включает в себя «редактирование XML»

Ну включает, куда ж без него. Хотя в моем личном проекте их XML только maven-овские конфиги

Которые можно заменить на gradle :)

Чувак спрашивал о JS в целом, а не только о ноде.

Java или Node.js?
нужен JS программист (писать на MeteorJS фреймворке), я собеседование не прошел, сказали учить еще 1-2 месяца Node.js, Meteor и тд.
Стоит ли прерывать изучение Java и учить MeteorJS?
Недавно написали из компании в моем городе, что нужен JS программист
Смотрел вчера рынок фриланса там очень много заказов по JS

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

Вы щас потроллить, или серьезно предполагаете, что за 8 лет в веб-разработке я не знаю, что такое JavaScript?

я щас за правильное употребление терминов и правильное истолкование вопросов топикстартера.

Значит, в тред саммонится ТС, пусть все сам и истолкует.

ну вы же должны понимать что java и node нельзя сравнивать можно — jvm vs node js / java vs javascript

ага
вопрос, насколько я понял, был какую серверную технологию выбрать джаву(на джвм) или джаваскрипт(на ноде). Фронт-эндом там и не пахло.

Саш, он с технологиями не определился. Так что там и про язык тоже.
JavaFX упоминается — как бы не сервер ни разу.
Учится, присматривается по вопросу трудоустройства.
В итоге сводится к Java vs Javascript, а не только Spring/Tomcat vs Node.js

Ну, окей. Тем более что сам ТС не соизволил поучаствовать в комментах и подробней описать чего он ваще хочет. Пускай выбирает Кобол. Говорят на нем работа всегда есть. :)

Та легко! Express, Jade, Less и иже с ними.

Лепить темплейты на джейде — это не совсем фронт-энд. Сейча под фронт-эндом скорее понимают js rich свистелки-перделки оформленные в сингл-пейдж-апп на клиенте.

Это сейчас

свистелки-перделки оформленные в сингл-пейдж-апп на клиенте.
..А ф принципе фронтенд- это любой веб уй..

Подписаться на комментарии