Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Почему node.js до сих пор не убил PHP? (https://javascript.ru/forum/offtopic/43810-pochemu-node-js-do-sikh-por-ne-ubil-php.html)

Winner1 21.12.2013 22:04

Почему node.js до сих пор не убил PHP?
 
Здравствуйте уважаемые!
Предлагаю высказаться по сабжу.

kobezzza 21.12.2013 22:25

Почему вы считаете, что Нода должна убить PHP? И почему именно PHP? Или вы считаете, что реализация паттерна non blocking IO есть только в Node.js?

PHP - PHP Daemon
Python - Twisted
Ruby - EventMachine
и т.д.

Мир разнообразен, задачи разные.

Winner1 21.12.2013 22:39

Приветствую kobezzza!
Кроме все прочего, с node.js серверные и клиентские приложения можно писать на одном языке. Только лишь один этот факт уже звучит как смертельный приговор для PHP.

kobezzza 21.12.2013 22:47

Цитата:

Сообщение от Winner1 (Сообщение 288246)
Приветствую kobezzza!
Кроме все прочего, с node.js серверные и клиентские приложения можно писать на одном языке. Только лишь один этот факт уже звучит как смертельный приговор для PHP.

А вы пробывали? Я пишу на JS больше 4-х лет (каждый день 8+ часов - это моя работа), под Node больше года и могу сказать: сказки про единый код - это ерунда. Максимум, что выносится - это библиотеки общего назначения, вроде Async.js, EventEmitter и т.д. а во всём остальном код на сервер и клиенте - разный! Главный профит для меня от Ноды - это то, что я хорошо знаю JS и могу не писать на других языках, которые я знаю хуже. Для тех, кто клёво знает Java или Python, но плохо JS - этого профита нет.

***

Вы не ответили, почему именно PHP? PHP уверенно занимает нишу малых и средний проектов, у него огромная уже существующая база. Для PHP существует больше 100 хороших CMS/CMF, я уже молчу про всякие форумные движки и т.д. Сколько CMS вы знаете под Ноду?

ЗЫ: прошу заметить, что я не PHP разработчик, а JS и то, что я пишу не является "батхёртом", а вполне трезвой оценкой. Если мне захочется сделать блог, то я возьму WordPress, а не буду плясать с Node и всякими Meteor/Derby/Express .

Winner1 21.12.2013 23:22

Цитата:

Сообщение от kobezzza (Сообщение 288248)
код на сервер и клиенте - разный

В смысле- разный код? Так код и на одной странице разный- вверху не тот, что внизу :) ... но язык то один, или нет?


Цитата:

Сообщение от kobezzza (Сообщение 288248)
PHP уверенно занимает нишу малых и средний проектов, у него огромная уже существующая база

Это не залог бессмертия. Много, чего в прошлом занимало разные ниши а теперь уже не занимает потому, что появились лучшие технологии.
Цитата:

Сообщение от kobezzza (Сообщение 288248)
PHP уверенно занимает нишу малых и средний проектов, у него огромная уже существующая база

Так в том то и вопрос - почему node.js не получил должного развития и для него не написали скрипты и тп?
Понятно, что вы не ПХП прогер. Потому, что не смотря на ворох ПХП движков и фреймворков, когда приходится реализовывать конкретный проект то среди готовых решений ничего даже близко подходящего нет. И команды прогеров месяцами допиливают движки и фреймворки, чтобы получить желаемое и то далеко не идеальное. За это время, этот проект можно было бы написать с нуля и под конкретные задачи. Так, что не стоит воспринимать этот ворох скриптов как аргумент в пользу вечности ПХП.

kobezzza 21.12.2013 23:33

Цитата:

Сообщение от Winner1 (Сообщение 288251)
В смысле- разный код? Так код и на одной странице разный- вверху не тот, что внизу :) ... но язык то один, или нет?

Попробую разжевать: бекэнд и фронтенд - это разные миры и разные подходы к программированию. А code-reuse между клиентом и сервером не так велик, как его выдают.

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

Цитата:

Сообщение от Winner1 (Сообщение 288251)
Это не залог бессмертия. Много, чего в прошлом занимало разные ниши а теперь уже не занимает потому, что появились лучшие технологии.

Ну, гугл уже выпустили Dart 1.0 и свою VM, а также аналог Node.js, мб "завтра" вы создадите тему "Почему Dart до сих пор не убил JS".

Цитата:

Сообщение от Winner1 (Сообщение 288251)
Так в том то и вопрос - почему node.js не получил должного развития и для него не написали скрипты и тп?

Потому что node.js появился в 2009 году, а PHP в 94-м.

Цитата:

Сообщение от Winner1 (Сообщение 288251)
Потому, что не смотря на ворох ПХП движков и фреймворков, когда приходится реализовывать конкретный проект то среди готовых решений ничего даже близко подходящего нет. И команды прогеров месяцами допиливают движки и фреймворки, чтобы получить желаемое и то далеко не идеальное. За это время, этот проект можно было бы написать с нуля и под конкретные задачи.

У каждого языка есть своя сфера применения, может стоит не писать "велосипеды" с нуля, а просто выбрать подходящий язык с подходящими фреймворками. PHP - это капля в море. Ещё есть Java, Python, Perl, Ruby, Erlang, C#, C++ и т.д.

Winner1 22.12.2013 00:51

Цитата:

Сообщение от kobezzza (Сообщение 288252)
Попробую разжевать: бекэнд и фронтенд - это разные миры и разные подходы к программированию. А code-reuse между клиентом и сервером не так велик, как его выдают.

Этот как управление автомобилем: едете вперед, едете и тут вдруг вам взад надо ехать.
У вас для этого отдельный водитель имеется?
Потому как подходы езды, знаете-ли, разные.


Цитата:

Сообщение от kobezzza (Сообщение 288252)
Ну, гугл уже выпустили Dart 1.0 и свою VM, а также аналог Node.js, мб "завтра" вы создадите тему "Почему Dart до сих пор не убил JS".

Ну если будут на то причины то может и создам такую тему, а пока, что Дарт выглядит как мертворожденное дитя. Его не поддерживает ни один браузер, да и никто его в свои браузеры не будет пихать, поддерживая этим своего конкурента. А ЯС уже во всех браузерах и в мобилах. Так, что сравнение неадекватное.[/quote]

Цитата:

Сообщение от kobezzza (Сообщение 288252)
Потому что node.js появился в 2009 году, а PHP в 94-м.

Результирую ваши мысли: node.js не убил PHP потому, что не успел еще.

nerv_ 22.12.2013 01:31

Цитата:

Сообщение от Winner1
Почему node.js до сих пор не убил PHP?

Почему node.js выпустил из тюрьмы Ходарковского?
Почему node.js не предпринимает попыток выхода из фин. кризиса?
...

Потому, что гладиолус.
Потому, что node.js против насилия.
Потому, что на php писать проще.
...

Сказка ложь, да в ней намек, добрым молодцам урок :)

kobezzza 22.12.2013 10:30

Winner1, этот разговор напомнил мне:

monolithed 22.12.2013 13:37

Цитата:

Сообщение от Winner1
Почему node.js до сих пор не убил PHP?

У меня в проекте большая часть серверного кода написаны на Python и С++, также немного Lua, Erlang и Bash, для тестов JS-кода и прочих специфических вещей для JS использую ноду c кучей библиотек.

Если все PHP-программисты перейдут на ноду, будет жопа, т.к. большинство JS-библиотек написаны отвратительно.

Shaci 22.12.2013 13:43

Цитата:

Сообщение от Winner1
node.js не убил PHP потому, что не успел еще

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

Можете задаться такой задачей, чтобы уничтожить ПХП).
И кстати, почему именно нода должна пхп убить, а если после этого ноду должен руби уничтожить, а потом руби убьет джава, а потом всех убьет C++ (на нем же можно cgi скрипт написать спокойно)?

monolithed 22.12.2013 14:34

Цитата:

Сообщение от Shaci
потом всех убьет C++ (на нем же можно cgi скрипт написать спокойно)

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

Цитата:

Сообщение от Shaci
Тонны кода на пхп кто на ноду будет переписывать, вы?

Если честно не понимаю стремления все писат на одном языке.
Помню я как-то взялся переписывать bash-скрипты на python и очень сильно пожалел о потраченном времени.
Цитата:

Сообщение от Дзен-трансгуманист
Нужно ли это доказывать?

А ты сможешь? :D

Gozar 22.12.2013 16:49

Цитата:

Сообщение от Winner1
Почему node.js до сих пор не убил PHP?

У них совершенно разный порог вхождения. У js(node.js) порог вхождения гораздо выше, чем у php.

Очень большая толпа говнокодеров никогда не перейдет на js, ruby, python ...

monolithed 22.12.2013 21:16

Цитата:

Сообщение от Gozar
У js(node.js) порог вхождения гораздо выше, чем у php.

Спрашиваю без троллинга, почему ты так считаешь?
Там же вагон того чего нет в JS: классы, интерфейсы, модули, перегрузка методов, генераторы, директивы php.ini, расширение языковых конструкций, ссылки, предопределённые переменные, регистронезависмые функции, импорт функций из пространства имён, необязательные и переменные аргументы, модификаторы (static, deprecated и пр.), трейты, позднее статическое связывание, и более 8 000 функций (и дубликатов) в глобальновном пространстве имен.

kobezzza 22.12.2013 21:30

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

С нодой же такой трюк не прокатывает, во первых асинхронное программирования сразу же взорвёт мозг новичку, а во вторых уже даже не важно, т.к. ему хватит во первых :D

monolithed 22.12.2013 21:57

Цитата:

Сообщение от kobezzza
Новичок взяв пых может сразу же начать писать код,

Так с любым языком. У меня разве что с Haskell были проблемы.
Цитата:

Сообщение от kobezzza
С нодой же такой трюк не прокатывает,

Зайти на сайт ноды и посмотреть пример?

kobezzza 22.12.2013 22:11

Цитата:

Сообщение от monolithed (Сообщение 288426)
Так с любым языком.

Это для нас с тобой так. А теперь представь, человек худо бедно освоил HTML/CSS и никогда не сталкивался с программированием. На PHP он напишет свою гостевую книжку после 2-х дней занятий, а node он тупо забьёт от количества новых терминов и концепций.

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');


vs

echo 'Hello World!';


Цитата:

Сообщение от monolithed (Сообщение 288426)
Зайти на сайт ноды и посмотреть пример?

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

А пых ему говорит: качаешь XAMP, создаёшь index.php и пишешь
echo 'Hello World!';


Как ни крути, но пых проще в разы. Да даже ООП если брать, то статическая классовая реализация в разы проще к пониманию, чем динамическая прототипная модель.

monolithed 22.12.2013 22:21

Цитата:

Сообщение от kobezzza
А пых ему говорит: качаешь XAMP, создаёшь index.php и пишешь

Да ладно, XAMP, php.ini, httpd.conf, .htaccess и прочая муть.
Цитата:

Сообщение от kobezzza
Как ни крути, но пых проще в разы

Не могу пока согласиться :)

kobezzza 22.12.2013 22:24

Цитата:

Сообщение от monolithed (Сообщение 288429)
Да ладно, XAMP, php.ini, httpd.conf, .htaccess и прочая муть.

Зачем php.ini, httpd.conf, .htaccess и т.д. всё это узнаётся в последствии гораздо позже, поначалу это не нужно и человек об этом даже знать не будет.

XAMP ставится как простой ГУЙ (далее, далее, далее ...) и имеет красивую админку.

monolithed 22.12.2013 22:28

Цитата:

Сообщение от kobezzza
XAMP ставится как простой ГУЙ (далее, далее, далее ...) и имеет красивую админку.

Для этого нужно сперва узнать что такое XAMP (я лично никогда не ставил). А для знакомства с нодой нужно лишь зайти на сайт ноды и создать файл с двумя строчками. Что может быть проще?

kobezzza 22.12.2013 22:33

Цитата:

Сообщение от monolithed (Сообщение 288432)
Для этого нужно сперва узнать что такое XAMP (я лично никогда не ставил). А для знакомства с нодой нужно лишь зайти на сайт ноды и создать файл с двумя строчками.

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

К тому же любое обучение для новичка начинается с книжек и видеоуроков, коих по Пыху овер9000, а по ноде кот наплакал и те на буржуйском (хотя ща Илья улучшил ситуацию). В любой книжке ему сразу скажут про LAMP/XAMP/Denver и т.д.

Ты судишь по себе. А я 2 года преподавал таким вот "новичкам" JS, и у них мозг взрывался от всего этого, мне то и дело задавали вопросы: "а нельзя писать на ПХП везде?"

Gozar 22.12.2013 23:03

Цитата:

Сообщение от monolithed
Для этого нужно сперва узнать что такое XAMP

Ничего знать не нужно. Денвер "сто лет" как есть и народ его просто ставит, через Установить.

Порог вхождения в js ГОООРАЗДО выше чем в php. Ты даже не осознаешь насколько у них разный уровень. JS большинству людей кажется магией в чистом виде. Да что там далеко ходить, мне самому порой так кажется. Я 3 года писал на php, уже залез в классы, понял что жопа и так жить нельзя и только после этого я потихоньку начал понимать js. А ты говоришь они одинаковые.

Лично я считаю, что js один из сложнейших языков, в силу своей кроссбраузерной "глючности", что добавляет ему сложности в разы. Именно поэтому люди думают, что jquery это язык, который можно изучить новичку, а js это жесть для бородатых программеров.



В php зазубрил десяток функций и пиши код. GD давно по умолчанию стоит, работай с изображениями. А js - работай с изображениями? Да, можно, но тебе показать код скачивания изображения созданного в canvas? Да такой код новичку только в кошмарах может присниться.

cyber 22.12.2013 23:10

Цитата:

Сообщение от Gozar
js один из сложнейших языков

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

Gozar 22.12.2013 23:18

Цитата:

Сообщение от cyber
Есть языки и по сложнее.

Какой язык сложнее? Какой язык зависит от гадания на клиенте?

В каком языке ты не знаешь - можешь ты использовать тот или иной метод или нет?

monolithed 22.12.2013 23:31

Цитата:

Сообщение от Gozar
Какой язык сложнее? Какой язык зависит от гадания на клиенте?

В каком языке ты не знаешь - можешь ты использовать тот или иной метод или нет?

C++, особенно если нужно сделать кроссплатформенное графическое приложение без Qt

Gozar 22.12.2013 23:34

Цитата:

Сообщение от monolithed
C++

Не писал на С++. Возразить нечего.

Gozar 22.12.2013 23:35

Цитата:

Сообщение от monolithed
особенно если нужно сделать кроссплатформенное

Ну вот ты и ответил на свое возражение. В php нет кросс****-сти

monolithed 22.12.2013 23:36

Цитата:

Сообщение от Gozar
В php нет кросс****-сти

Что-то мне так не показалось, когда я пытался поставить его на винду :D

Gozar 22.12.2013 23:40

Цитата:

Сообщение от Poznakomlus
это Ассе́мблер

Чтоб тебе всю жизнь на нем графические интерфейсы писать!

Цитата:

Сообщение от monolithed
Что-то мне так не показалось, когда я пытался поставить его на винду

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

cyber 22.12.2013 23:42

Цитата:

Сообщение от Gozar
Какой язык сложнее?

Ассемблер.

Vlasenko Fedor 22.12.2013 23:43

Цитата:

Сообщение от Gozar (Сообщение 288449)
Чтоб тебе всю жизнь на нем графические интерфейсы писать!

Ага, но окно каждому надо хоть раз попробовать :)

Gozar 22.12.2013 23:43

Цитата:

Сообщение от cyber
Ассемблер.

Я так не считаю. Хоть я и очень давно его ковырял.

Каким местом Ассемблер в веб?

Gozar 22.12.2013 23:47

Я немного преподавал ActionScript 2.0 и прекрасно понял, что имел ввиду kobezzza. Всем остальным - идите попреподавайте немного, сразу дойдет.

kobezzza 22.12.2013 23:48

Gozar, ну не перегибай) Возьмём к примеру С: ручное управление памятью (забыл вызвать free и пздц), арифметка указателей, нет абстракции "строка" - работаем с массивом символов. Массивы при передачи как параметр другой функции распадаются в указатель и мы уже не можем узнать его длину, поэтому всегда передаём дополнительным параметром длину заданного массива. Ебля с кроссплатформенностью и т.д. и т.п.

Gozar 22.12.2013 23:50

Цитата:

Сообщение от kobezzza
не перегибай

К этой теме это как-то относится?

kobezzza 22.12.2013 23:51

Цитата:

Сообщение от Gozar (Сообщение 288457)
К теме это как-то относится?

Ну я к высказыванию, что "сложнее JS трудно найти". JS сложный, но всё такие это высокоуровневый ЯП, со сборкой мусора и всяким сахаром:)

kobezzza 22.12.2013 23:55

Цитата:

Сообщение от monolithed (Сообщение 288448)
Что-то мне так не показалось, когда я пытался поставить его на винду :D

Никогда с этим проблем не было, юзал Denver или XAMP.

kobezzza 23.12.2013 00:01

Цитата:

Сообщение от cyber (Сообщение 288451)
Ассемблер.

На ASM уже никто не пишет толком, ну разве что на FASM. Даже шейдеры и программирование под GPU пишутся на С.

Яростный Меч 23.12.2013 18:47

Цитата:

Сообщение от Gozar
Лично я считаю, что js один из сложнейших языков

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

Цитата:

Сообщение от Gozar
в силу своей кроссбраузерной "глючности", что добавляет ему сложности в разы.

кроссбраузерные сложности в основном относятся к DOM, верстке и т.д., в js их и 5 штук не наберется.

Gozar 23.12.2013 19:12

Цитата:

Сообщение от Яростный Меч
в js их и 5 штук не наберется

Я с тобой полностью согласен. Мне стоило указать не на js, а на общую разработку с помощью js в контексте браузерных и смежных технологий.


Часовой пояс GMT +3, время: 13:02.