Pull to refresh
0
0
Голубев Александр @l3x

User

Send message
Например, несколько интерфейсов у async функции: она может возвращать thunk, promise или принимать обычный callback в традиционном стиле; await тоже принимает все варианты. Это, конечно, просто возможности библиотеки и аналог можно реализовать и в co, но на данный момент получается, что asyncawait лучше будет работать с существующим кодом.

Есть еще небольшая фича, которую, как мне кажется, с помощью генераторов сделать не получится: внутри async-функции любые другие async-функции можно вызывать без await. Т.е. для своего кода можно достичь результата, где весь код выглядит синхронным и await даже не упоминается, а если сделать аналог require('bluebird').promisifyAll(require('fs')) для async функций (т.е. async.asyncifyAll()), то и вообще весь код станет визуально синхронным.

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

Пример подсчета файлов в обоих случаях.
// все нужные require

// co + генераторы
var countFiles = co(function* (dir) {
  var files = yield fs.readdirSync(dir);
  var paths = _.map(files, function (file) { return path.join(dir, file); });
  var stats = yield _.map(paths, function (path) { return fs.statAsync(path); });
  return _.filter(stats, function (stat) { return stat.isFile(); }).length;
});

// async/await
var countFiles = async.cps (function (dir) {
  var files = await (fs.readdirSync(dir));
  var paths = _.map(files, function (file) { return path.join(dir, file); });
  var stats = await (_.map(paths, function (path) { return fs.statAsync(path); }));
  return _.filter(stats, function (stat) { return stat.isFile(); }).length;
});


Как можно радоваться от промисов при виде этого стройного кода я не понимаю.
Причем даже в сложных ситуациях это все не разваливается а продолжает выглядеть понятно, как синхронный код. О промисах и callback'ах с async такого сказать нельзя.
Для node.js есть реализация async/await: github.com/yortus/asyncawait. Однажды попробовав, промисы использоваться больше не захочется.
Лично я думаю, что дело во времени, когда эти функции появились.
array_map — это php 4.0, т.е 2000ый год (12 лет назад!) и тогда лучшего решения, как поменять параметры местами, просто не придумали. С того времени функцию уже не меняли из-за обратной совместимости.

array_intersect_ukey — это уже php 5, 2005ый год — за 5 лет люди поменялись и новое решение нашлось и всех устроило.
Справедливости ради, сделать такое можно. Пример:

array array_intersect_ukey ( array $array1 , array $array2 [, array $... ], callable $key_compare_func ) php-doc
100+ комментариев и никто не прочитал документацию по функциям до конца, и, похоже, на деле их никогда не использовал.

Все функции в «функциональном» стиле имеют вид array_*(array $input, $callback).
array_map выделяется из этого стиля, потому ей на вход можно передать несколько массивов.
Полное описание такое:
array array_map ( callable $callback , array $arr1 [, array $... ] )
Нужна ли такая возможность — спорный вопрос, но изменение порядка аргументов, по-моему, оправдано.

Проблема с порядком параметров в PHP есть, но приведенный в топике пример никакого отношения к ней не имеет.

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

Ведь на самом деле, никто не сидел, не придумывал "синус". Была Задача. Ее было интересно решить. Кто-то этим занялся, начал строить модель, которая могла бы ему помочь, доказывать её правдивость. Во время этого процесса было введено много новых понятий, появилось множество фактов, которые между делом были доказаны.

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

Мне вот самому математика стала на порядок ближе, после того, как я увидел примеры её применения, не простейшие факты, а что-то из более серьезного. Например, 3д графика в современных играх просто не могла бы существовать без аналитической геометрии и линейной алгебры. Пример попроще - интерполяция, которая встречается просто повсеместно, а ведь без доказательства множества, казалось бы абстрактных и ненужных фактов, её бы просто не было. Плохо вот только то, что интерес к науке, у меня появился не из-за преподавателей, а из-за личной заинтересованности. В стенах университета математика остается для меня кучей абстрактных теорий с длинными выкладками доказательств и полным не пониманием, зачем оно может понадобиться. Получается все или почти все зависит от преподавателя, который знакомит вас с наукой.
Мне тоже было лет 5, когда я играл. Читая статью думал, что очень интересная игра, жаль, что я не застал, а скачав демо вспомнил все, потому что такое забыть нельзя, действительно шедевр.
вот, не стоит доверять iPhonу :)
.kkreiger действительно технологическое чудо, до сих пор поражаюсь ему.

Кстати он так же является неплохим показателем производительности компа. Когда я первый раз его запустил он у меня еле шевелился, а с каждым апгрейдом все быстрее и быстрее.
Любопытно, что тут видна общая тенденция к упрощению логотипа. Последнее поколений логотипов часто простая надпись вполне обычным шрифтом с минимумом искажений. И, надо сказать так действительно выглядит лучше :)
Разве что Xerox из этой тенденции выпадает, наверное за это многие его новый логотип и ругают :)
А если бы вы имели возможность прочитать подобные гайдлайны самостоятельно? И не только этот, а многие другие?
По-моему знание английского языка на более высоком уровне предоставляет гораздо бОльшие возможности получения образования в сфере IT. Поэтому посильная помощь в изучение английского языка, с моей точки зрения, была бы более полезной.
P.S против начинания, предложенного автором топика, я, конечно, ничего против не имею и даже с радостью поддержу и помогу.
Идея хорошая, но по-моему подход не с той стороны. Надо не переводить, а учить английский. Получение IT-образования без знания английского языка лично мне кажется кардинально неправильным.
У меня тоже родители довольно давно сидят на ВКонтакте и Одноклассниках. И я, не будучи поклонником этих сервисов, только глядя на них, понимаю, что именно для старшего поколения подобные сервисы действительно полезны и удобны и изначально были созданы. Нахождение одноклассника, живущего на другой стороне земного шара с которым не виделись 30 лет - вот настоящая польза. Так что пусть недовольные сами уходят. Я за своих родителей только рад.
Прочитав линч даже чуть-чуть лучше стал относиться к топ4топу.
И уже наверное сейчас можно сказать, что если будут появляться порталы, хотя бы с небольшой частью флеша, их будут сравнивать именно с топ4топом.
Долгое время пользовался notepad++ и был вообщем-то доволен, Но потом стал параллельно заниматься проектами на java, работая в eclipse и очень сильно к нему привязался. Настолько, что ничего другое уже не нравилось (корявость Zend Studio просто ужасает после eclips'a), поэтому и пришел к Eclipse+PDT.
а они ко всему прочему еще и греть океан будут... так что, наверное, можно будет встретить "Извините, сервер был закрыт Грин Писом"

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Date of birth
Registered
Activity