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)

Хант эксперт 02.04.2015 12:07

kobezzza,
Добрый день, я - рекрутер. Ищу в химический российский холдинг Senior JavaScript Developer.Реальный опыт применения node.js. З/п выше рынка.
Пересмотрели уже примерно 200 кандидатов. Ищем гения. Есть желание попробовать?

kobezzza 02.04.2015 12:31

Цитата:

Сообщение от Хант эксперт (Сообщение 364589)
kobezzza,
Добрый день, я - рекрутер. Ищу в химический российский холдинг Senior JavaScript Developer.Реальный опыт применения node.js. З/п выше рынка.
Пересмотрели уже примерно 200 кандидатов. Ищем гения. Есть желание попробовать?

Спасибо за предложения, но у меня уже есть работа.

magnuz 19.10.2016 10:07

пыха вне конкуренции потому как она на любом хостинге есть по умолчанию, а всякие питоны, рельсы и тп за них надо дополнительно платить, ждать когда включат и тп.
Другое дело, что самого скриптового языка очень мало. Движок играет роль гораздо больше. Сейчас без движка нормальный сайт не напишешь. А с движками в пыхе на самом деле плохо. Хоть и много их а толку мало. но я сомневаюсь, что Jango или рельсы так уж лучше Yii . Просто там альтернатив нет.

laimas 19.10.2016 17:48

Предположение о "скорой кончине РНР" напомнило мне одну баталию на одном форуме о "скорой кончине Windows", и очень скором будущем когда Linux ворвется во все дома. :)

Ребята, Денвер давно почил в бозе, есть простой и замечательный локальный сервер - Open Server. Нынешняя версия его с поддержкой РНР 7, в котором много нового, асинхронность в том числе.

Linux был создан как свободный продукт, а ни как киллер для найма кончить Widows, это уже фанаты с обеих сторон несут чепуху о кончине и прочем. Так и Node.js не создавался ради уничтожения РНР и еже с ним, и задаваться вопросом почему до сих пор не прозвучало выстрела и покойный не лежит в гробу, это полнейшая чепуха. :)

MegaScript 21.10.2016 00:28

Потому что PHP модный, но с приходом NodeJS он постепенно вымирает

Aetae 21.10.2016 00:56

PHP проще. Может что-то пыху и убьёт, но точно не нода. Основная её фича - асинхронность всего и вся, никогда не даст ей стать базой для новичка. Слишком сложно для понимания. А почти весь интернет делается новичками на коленке.)

Что же сложного, спросите вы? Хз, отвечу я. Но статистика этого и не только форумов и всяких Q&A явственно об этом свидетельствует.)

MegaScript 21.10.2016 15:48

ES6 проще. Может что-то js и убьёт, но точно не php. Основная его фича - синхронность всего и вся, никогда не даст ей стать базой для новичка. Слишком сложно для понимания по сравнению с async await в js. А почти весь интернет делается новичками на коленке.)

Что же сложного, спросите вы? Хз, отвечу я. Но статистика этого и не только форумов и всяких Q&A явственно об этом свидетельствует.)

Aetae 21.10.2016 17:56

MegaScript, забавно, но, увы, неправда.
ES6 с async await проще? Только на бумаге. Новичку вообще нереально поставить и настроить себе все эти бабелы, вебпаки и прочую ересь, чтоб оно таки заработало.)

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

Rasy 21.10.2016 18:00

Все что нода убила, так это идею делать чаты на пхп)

Lemme 21.10.2016 19:13

Цитата:

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

Но в том, что чел думает, что псевдосинхронный код легче, чем синхронный, это печалька, ибо он не понимает, что чтобы нормально использовать async/await, нужно:
1) Уменить использовать асинхронный код, ибо он все же асинхронный.
2) Уметь использовать промисы, ибо async/await это сахар над промисами.
3) И, пожалуй, самое простое - знать синтаксис async/await

Пожалуй, чутка говнокода.

const echo = msg => new Promise((resolve, reject) => {
  setTimeout(() => {
    const isError = Math.round(Math.random())
    
    if (!isError) {
      return resolve(msg)
    }
    
    reject('Something bad happend')
  }, 500)
})

echo('hey')
  .then(msg => console.info(msg))
  .catch(err => console.error(err))


А вот тоже самое, но с async/await
(async () => {
	try {
  	console.info(await echo('hey'))
  } catch (e) {
  	console.error(e)
  }
})()


И теперь вопрос MegaScript, где async/await проше, чем синхронный код?

Aetae 21.10.2016 19:33

Цитата:

Сообщение от Lemme (Сообщение 432528)
Это все легко, ибо я новичек и с этим проблем не возникало.

А форум говорит что ты "Профессор".)
Вообще под новичком я подразумевал человека, тоторый просто берёт и начинает делать то что ему нужно, максимум имя за спиной давно забытые школьные основы бейсика или студенческие основы C. С php так можно, с Node - неа.

Vlasenko Fedor 21.10.2016 20:24

Цитата:

Сообщение от Aetae
С php так можно, с Node - неа

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

Aetae 21.10.2016 20:34

Poznakomlus, никто ничего не ругает. Я говорил про порог вхождения.

Vlasenko Fedor 21.10.2016 21:20

да php порог ниже согласен,
я по себе скажу PHP 5 в подлиннике, Котеров был отличной книгой учебником
а вот PHP 7 Котеров читаю и вижу говнокод, а книгу писали (якобы) люди с 15 летним стажем, что говорить про остальных

MegaScript 22.10.2016 07:14

Цитата:

Сообщение от Aetae
Новичку вообще нереально поставить и настроить себе все эти бабелы, вебпаки и прочую ересь, чтоб оно таки заработало.)

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

MegaScript 22.10.2016 07:16

Цитата:

Сообщение от Lemme
И теперь вопрос MegaScript, где async/await проше, чем синхронный код?

в разы

try {
   console.info(await echo('hey'))
} catch (e) {
   console.error(e)
}


Он вообще ничем не отличается от обычного кода кроме оператора await который новечкам не то что ПОНЯТЕН, он им НЕОБХОДИМ, я помню все детство меня бесило что яваскрипт нельзя на время приостановить чтобы что-то сделать. А так тут он еще и неблокирующую приостановку делает. У меня мозг вообще тогда не понимал как это javascript все мгновенно делает, а как тогда например таймаут задать? или там обрабоать ответ от сервера? и потом я узнал про каллбаки, а потом понял что это костыли которые люди использовали пока промисы не изобрели, а потом и await собственно. так что да, await раз в 200 проще чем промисы, для этого его собственно И ПРИДУМАЛИ чтобы ПРОШ\ЩЕ и САХАРНЕЕ было)) с подключением

Lemme 22.10.2016 12:26

MegaScript, ясно, сори, но ты отбитый.

Ладно, последняя попытка, выполни следующий код с помощью async/await, так, что бы в консоль вывелось

Цитата:

foo
bar
не меня последовательность кода и задержку.

setTimeout(console.log, 1000, 'foo')
setTimeout(console.log, 500, 'bar')

Erolast 22.10.2016 16:08

Цитата:

А так тут он еще и неблокирующую приостановку делает. У меня мозг вообще тогда не понимал как это javascript все мгновенно делает, а как тогда например таймаут задать?
Ну вот ты сам же и ответил на свой вопрос. Синтаксис async/await очень сладок, но ассинхронность сложна для понимания сама по себе - именно из-за отсутствия блокировок. Новичков вводит в ступор то, как одни участки кода входят в задержку, пока остальные продолжают работать как ни в чем не бывало.

Цитата:

Не говоря уже о том, что "не будет никакого этого вашего async await", т.к. выпилили из стандарта.
Ну не надо ж так пугать. Ничего его не выпиливали, просто отложили. Сейчас async/await в статусе Finished (вот, пожалуйста), это значит, что в 2017 году его включат в стандарт.

MegaScript 26.10.2016 06:07

Цитата:

Сообщение от Lemme
ясно, сори, но ты отбитый.

http://ru.wikipedia.org/wiki/Ad_hominem

Цитата:

Сообщение от Lemme
выполни следующий код с помощью async/await

async function pause(time){
  return new Promise(function (resolve){
    setTimeout(resolve, time)
  })
}


async function log(time, message){
  await pause(time)
  console.log(message)
}

// запускаем параллельно две задачи
log('foo', 1000)
log('bar', 500)


То есть async await позволяет более гибко управлять потоком, там где мы хотим ждать, и там где мы хотим распарралелиться. Более того, мы с ребятами из ES6 думаем добавить оператор await* который принимает на вход массив промисов и ждет их всех.

Тогда бы можно было распарралелить две задачи, а потом выполнить код ПОСЛЕ завершения их всех, вот так:
await* [log('foo', 1000), log('bar', 500)]
alert('обе задачи выполнены')


Пока же для этого не придумали сахар, приходится делать так:
await Promise.all([log('foo', 1000), log('bar', 500)])
alert('обе задачи выполнены')


А теперь ТЫ мне сделай чтобы после выполнения:
setTimeout(console.log, 1000, 'foo')
setTimeout(console.log, 500, 'bar')

вывелось сообщение alert('обе задачи выполнены'). СЛАБО?? что, отбитый, ОБОСРАЛСЯ???? ну же, я жду код.


==============================
Цитата:

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

Новичкам очень нравится что только ЭТА функция приостановилась, а остальные работают как надо и не тормозится ничего, а как надо будет, эта продолжится. Ровно так же работает и PHP, если ты напишешь sleep(500) твой скрипт ПРИОСТАНООВИТСЯ!! но СЕРВЕР ПРОДООЛЛЖИТ ПРИНИМАТЬ И ВЫПОЛНЯТЬ ЗАПРОСЫ от других пользователей. Все логично. Следовательно ты не прав а я прав.

К тому же теперь, чтобы все было так же просто как и в PHP, в node js вы можем писать как бы синхронный код.

Там где мы в php делали запрос к базе и наш скрипт приостанавливался (А ДРУГИЕ PHP СКРИПТЫ РАБОТАЛИ КАК Ни В ЧЕМ НИ бывАло), в node мы теперь можем сделать наконец ТО ЖЕ САМОЕ(!) просто дописав перед запросом к базе данных await.

Вы поняли свою ошибку? ЕСЛИ ЖЕ по данной причине сложен NodeJS то ПО ДАННОЙ ЖЕ ПРИЧИНЕ сложен и PHP!!! Если по данной причине НЕ сложен PHP, значит по этой же причине НЕ сложен и NodeJS. Any questions?

MegaScript 26.10.2016 23:37

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

Lemme 26.10.2016 23:43

MegaScript, разве твой код проще, чем синхронный?

Цитата:

вывелось сообщение alert('обе задачи выполнены'). СЛАБО?? что, отбитый, ОБОСРАЛСЯ???? ну же, я жду код
const run = gen => {
    const it = gen(msg => it.next(msg))
  it.next()
}
 
run(function* (r) {
  console.log(yield setTimeout(r, 1000, 'foo'));
  console.log(yield setTimeout(r, 500, 'bar'));
  alert('done');
});

MegaScript 27.10.2016 01:36

Цитата:

Сообщение от Lemme
разве твой код проще, чем синхронный?

Я не понял вопроса, мы сравниваем два подхода. в PHP и в NODE.js

в PHP пишется так:
$result = db->query('bla bla');


в node.js к этому лишь добавляется оператор await
var result = await db.query('bla bla');


Сделатьельно асинхронка в nodejs не слжонее для понимания чем синхронка в php.

Таким образом я ДОКАЗАЛ ВЕРНОСТЬ своего утверждения.

А то что там какой то чувак меня попросил написать ТАЙМАУТ НА ПРОМИСАХ, это уж наркомания полная, но раз он попросил то я ему написал)) это к разговору вообще отношения не имеет, но раз попросили. А этот ребенок еще и нагрубил мне, а как ответку получил сразу обосрался и минусанул, аж с трех аккаунтов.


UPD: ой, это ты и просил))), я надеюсь ты сам то головой понимаешь что ты просишь несусветный бред НУ ВООБЩЕ не связанный с темой разговора???)))

Нет ну ты вдумайся, ты попросил меня написать какой то бред не связанный с темой разговора, при чем попросил для этого использовать инструменты для этого не предназначенные, а когда я написал, ты сказал что мой код не красивый, и использовал это как аргумент К НЕВЕРНОСТИ МОЕГО УТВЕРЖДЕНИЯ))))) ЧУВАК ДА ТЫ БОЛЬНОЙ че я еще могу сказать, еще и нахамил, мдааа, ну у вас и форум))

Lemme 27.10.2016 01:50

Цитата:

я надеюсь ты сам то головой понимаешь что ты просишь несусветный бред
MegaScript, таймауты на промисах бред, но только так можно было выбить из тебя, что не все так просто - "добавил await и все ахуенно". А на счет не по теме, все аргументы были к этому громкому заявлению:

Цитата:

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

Цитата:

var result = await db.query('bla bla');
Все круто,но не все ж возвращает промис.


возьмем node-jsonwebtoken
jwt.verify(token, secretOrPublicKey, [options, callback])


Что бы сделать все красиво, нужно написать что-то вроде этого, а потом уже использовать await...
const verifyToken = token => new Promise((resolve, reject) => {
  jwt.verify(token, secretOrPublicKey, async(err, decoded) => {
    if (err) reject(err);
    resolve(decoded);
  });
});

MegaScript 27.10.2016 03:19

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

Цитата:

Сообщение от Lemme
Все круто,но не все ж возвращает промис.

В данном коде
db.query
возвращает промис.

Цитата:

Сообщение от Lemme
возьмем node-jsonwebtoken

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

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


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

Lemme 27.10.2016 10:43

Цитата:

каким образом таймауты на промисах связаны с темой разговора?
Ибо ты написал, что синхронный код в PHP гораздо сложнее для понимания новичкам, чем async/await в js.
А я лишь доказал обратное, что не все может выглядеть так просто с async/await, я, конечно, согласен, что синхронный код далеко не всегда проще асинхронного, но в данном контексте это не так.

Т.е данный код в PHP
sleep(1000)
echo 'foo'
sleep(500)
echo 'foo'

Проше, чем аналогичный в JS

const sleep = time => new Promise(resolve => setTimeout(resolve, time))

(async () => {
	
  await sleep(1000)
  console.log('foo')
  await sleep(500)
  console.log('bar')
  
})()


Цитата:

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

setTimeout(() => {
  console.log('foo')
  setTimeout(() => {
  	console.log('bar')
    alert('done')
  }, 500)
}, 1000)


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

kobezzza 27.10.2016 11:38

Лол, вот вы срач развели. Нода с нонблок подходом не уникальна и точно не первая, кто это сделал. Во всех популярных языках есть такие фреймворки, и даже (о боже) в PHP есть.

Python - Twisted, Tornado;
Java - Vertx;
Scala - Spray;
PHP - PHPDaemon;

... тысячи их.

Говоря о моде: ща планку моды держит Go (даже всеми нами уважаемый Холивайчук свалил на Го), а нода уже просто заняла своё место под солнцем и всё, и никто никого убивать не будет. Вы так говорите, будто кроме пыха и ноды других языков нет.

Пишите на чём нравится и что лучше решает ваши задачи, и не ебите мозг окружающим)

MegaScript 27.10.2016 12:00

Цитата:

Сообщение от Lemme
Ибо ты написал, что синхронный код в PHP гораздо сложнее для понимания новичкам, чем async/await в js.

ТАК ЭТО ЖЕ Я ПЕРЕДНАЗНИЛ ЧУВАКАААА)!!!!!! ТЫ НЕ ПОНЯЛ ШТОЛЕ??) ОН СДЕЛАЛ УТВЕРЖДЕНИЕ КОТОРОЕ НИ ЧЕМ НЕ ПОДКРЕПИЛ, и я ИМЕННО ЭТО И ПЕРЕДРАЗНИИИЛ)) ну как котик делает, дозар или гозар, ну помните)? Он меня так траллил часто. Ну и вот я так же типа передразнил))), ты выше то каммент глянь.


Цитата:

Сообщение от kobezzza
Пишите на чём нравится и что лучше решает ваши задачи, и не ебитМы е мозг окружающим)

Пришел яндексмен и сказал то что все и так знают! Ты давай нам тут срачи не убивай! Мы хотим спорить о том о чем и так знаем! Мы хотим спорить! Чтобы писать пост а потом предвкушать ответ аппонента! Мы хотим спорить и выигрывать! Мы хотим оценить влияние фреймворка ui-js на индустрию! Мы хотим думать что раз я странный то я немо! Хотя я до сих пор так и не понял кто это! МЫ ХОТИМ ЕКШЕНА!!!! ХВАТИТ ВСЕ ПОРТИТЬ)!! ТЫ РУШИШЬ ВСЕ! ТЫ УСПОКАИВАЕШЬ ГОВОРЯ ПРАВДУ С КОТОРОЙ ВСЕ СОГЛАСНЫ!!!! КАК СРАТЬСЯ ТЕПЕРЬ))??

Лан, привет всем. Вообще я аккаунт создал, с именем языка, чтобы представить вам свой новый язык (es6 в стиле coffee) но я подумал что не буду хвастаться пока не доделаю. Но аккаунт пусть пока полежит зареганный чтобы не заняли. В итоге прошло пол года. Я начал делать онлайн ММО RPG на WEBG. и не до языка щас). Но акк остался.

Ну я думаю вы поняли О КОМ речь. Кто еще ударные слова ВОТ ТАК выделяет? ^_^

Кстати вот вы шутили шутили, что мой фреймворк качают только боты, а я уже месяца 3 не делал апдейт, и все ровно качают)!!!! https://www.npmjs.com/package/ui-js

КАК ВЫ ЭТО ОБЬЯСНИТЕ?????????????? При чем в отличии от бреда "Матрешки", я ни где не пиарился, чисто покидал ссылки на свое чудо ребятам с ангуляра и реакта, чтобы вдохновились как я хитро shadow дом эмулировал даже с <content select=''> с мгновенной реакцией на изменение селектора. Секрет прост. По скольку у меня виртуал дом, то ни что не помешало мне сделать МУТЕЙШЕН обсерверы ^__^. Которые я кстати использую для того чтобы избежать при рендеринге сравнения двух ДОМ деревьев ДО И ПОСЛЕ, а именно я накапливаю мутейшены и потом УЖЕ МЕЖДУ НИМИ нахожу кротчайщее расстояние и его рендерю в дом. Но щас не про это разговор. Разговор про то что КАЧАЮТ!!! КАЧАЮТ ПАСОНЫ)!!!! А ВЫ ТАК И НЕ НЕ ПРИЗНАЛИ ^__^

Цитата:

Сообщение от Lemme
Проше, чем аналогичный в JS

нет, так же просто как на js

await sleep(1000)
alert('foo')
await sleep(500)
alert('foo')

Lemme 27.10.2016 12:47

Цитата:

ТЫ НЕ ПОНЯЛ ШТОЛЕ??) ОН СДЕЛАЛ УТВЕРЖДЕНИЕ КОТОРОЕ НИ ЧЕМ НЕ ПОДКРЕПИЛ
Да в этом и смысла нет, ибо очевидно, что первое, где спотыкается новичек - вернуть результат из асинхронного вызова. У меня было именно так, да и у большинства, кто до этого не слышал об асинхронности.

Цитата:

Ну я думаю вы поняли О КОМ речь
Можешь собой гордиться, ты в этом плане (наверное) уникален. Все сразу понимают - кто ты, с первого же поста. :yes:

Оффтопа 2 страницы, иди лучше ММОРПГ пиши :D

MegaScript 27.10.2016 18:38

Цитата:

Сообщение от Lemme
иди лучше ММОРПГ пиши

черт..... и ведь правда, больше болтавни чем дела(


все, всем пока, не баньте MegaScript, так язык назову offeescript с поддержкой es6

Safort 27.10.2016 23:59

И на этой прекрасной ноте мы снова прощается с Максимусом.

cyber 28.10.2016 10:53

Цитата:

Сообщение от Safort
И на этой прекрасной ноте мы снова прощается с Максимусом.

У него походу трава закончился, и он отправился пополнять запасы :D


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