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)

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

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


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