• Про фразовые глаголы
    0
    Юрий Дружбинский часто рассказывает о логике развития языка, в том числе, и с такими примерами. Вы можете найти видео с его уроками в Ютубе по запросу «Юрий Дружбинский английский».
  • Про фразовые глаголы
    +7
    А если вы знаете, кроме немецкого, ещё и итальянский (который ближе всего к латыни), то английский становится ещё более понятным, т.к. примерно 30% языка произошло от германских языков, а 70% — от латыни (транзитом через французский).

    А если ещё понимать, что в средние века в Англии знать разговаривала, в основном, на французском, а простые люди на английском, то становится ещё более понятным, почему в языке закрепились те или иные слова. Например, pig — это свинья, а pork — свинина (сравните с итальянским словом porchetta (поркетта)). Всё потому, что знать не интересовалась свиньями, её интересовал продукт, получаемый из свиньи (свинина), а простые люди, наоборот, выращивали свиней, называя их на английском, но свинину не особо могли себе позволить, поскольку продавали/отдавали её знати.
  • Мне 14, и я совмещаю школу с работой в ИТ
    +2
    Это значит, что нужно менять работу на ту, которую вы будете любить. Ничего страшного в этом нет, это просто нужно принять, разобраться в себе, понять, что вас увлекает, и начать двигаться к новой цели.
  • Попытки начать обучение ребенка программированию с Minecraft pocket edition
    +1
    Как по мне — так это хороший повод объяснить ребенку, что вместе правами всегда появляются и обязанности. У нас, как у родителей, есть обязанность кормить ребенка, одевать его, а у ребёнка есть обязанность хорошо учиться в школе. Это базовые обязанности, которые никто не оспаривает. Но затем всё по-другому. Например, гаджеты, игры и т.д. — это всё в обмен на дополнительные занятия. Право тупить в гаджетах идёт вместе с обязанностью дополнительно заниматься. Ведь ребёнок не сам купил гаджет, не сам оплачивает интернет, не сам покупает игрушки. Если он хочет, чтобы родители всё это продолжали делать — пусть радует родителей каким-то образом.

    P.S.: Гаджет отбирать и не нужно. Чаще всего достаточно сменить пароль Wi-Fi, и через 15 минут ребёнок придёт договариваться ))
  • Попытки начать обучение ребенка программированию с Minecraft pocket edition
    +1
    Олимпиадной математикой мы летом занимаемся. В течение года на неё не хватает времени. У нас получается проходить по половине полуторачасового занятия в день — потому что мы останавливаем воспроизведение когда преподаватель даёт задачи, когда нужно проверить, усвоили ли они материал, когда нужно что-то дополнительно объяснить и т.д. В итоге за неделю мы успеваем проходить всего 3 полуторачасовых занятия вместе с домашками к ним. Сейчас это одно занятие по алгебре, одно по геометрии и одно по физике. А олимпиадный курс пройдём летом, когда будет больше свободного времени.
  • Попытки начать обучение ребенка программированию с Minecraft pocket edition
    +2
    Нет, не думаю, что испортит. У нас правило: первым делом после школы сделать домашку, потом дополнительно позаниматься, а потом, если осталось время — игры, ютуб и т.д. Иногда можно после домашки поиграться до дополнительных занятий, если мне нужно закончить работу и я не могу оторваться на занятия с ними.

    Кроме того, наличие игрового компа предоставляет дополнительную возможность для мотивации. Например, они знают, что первое время им будет разрешено играться только по полчаса в день. Сколько продлится такой режим? До того момента, пока они не освоят метод слепой десятипальцевой печати на обеих раскладках (английской и русской). Для них это большая мотивация, поэтому, думаю, освоют быстро ;)). Дальше нужно будет покупать игры в том же Steam — а откуда на них брать деньги? Вариант только один — заниматься )).
  • Попытки начать обучение ребенка программированию с Minecraft pocket edition
    +1
    Во-первых, у меня не только метод пряника. Как я уже писал, играть в гаджеты им можно только если они за последние 7 календарных дней не пропускали дополнительных занятий. Так что «нет занятий — нет гаджетов», а это кнут для детей сильный.

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

    Что касается оценок, то они меня не особо интересуют. И мои дети это знают. Меня интересуют знания, а не оценки, тем более в их возрасте.
  • Попытки начать обучение ребенка программированию с Minecraft pocket edition
    +4
    Мои сыновья до программирования ещё не дошли, но математику прокачали капитально. Сейчас им 11 и 10 (будет в ноябре) лет, математику они проходят на уровне 8-го класса физматшколы, с сентября начали изучать физику, со следующего лета договорились изучать программирование. Таких результатов мы добились за 2 года. Вот мой рецепт:

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

    2. Все занятия только вместе со мной (несмотря на то, что занятия ведёт преподаватель онлайн-школы Фоксфорда). При мне они не отвлекаются, я вижу, когда им что-то непонятно, проверяю, поняли ли они объяснение преподавателя, задавая уточняющие вопросы и т.д. Давать им заниматься самим я пробовал, но пришёл к выводу, что в таком возрасте это неэффективно (в моём конкретном случае).

    3. Ребёнок должен не только понимать долгосрочную цель своих занятий («в будущем тебе это очень пригодится, кем бы ты ни захотел стать», «спрос на математиков на рынке труда очень высок и будет только расти в будущем» и т.д.), но и иметь более краткосрочные цели.

    Во-первых, я им плачу за их труд (по 5 евро в неделю каждому; с сентября я поднял их зарплату до 10 евро в неделю — при условии, что они не пропустили ни одного дня, кроме дней, когда есть и школа, и тренировка).

    Во-вторых, у нас есть правило: гаджеты разрешены только если не было пропусков дополнительных занятий в течение предыдущих 7 дней. То есть если они захотят полениться и пропустить занятие, то следующую неделю проведут без гаджетов.

    В-третьих, у них есть и более долгосрочные цели. В первый год занятий для старшего сына такой целью был мой старый iPhone 6+. Я пообещал ему отдать его, если он до 1 сентября успеет полностью пройти программу 6 класса по математике (углублённый курс для 6-го класса уже упоминавшегося Фоксфорда). Он напрягся и прошёл. Получил iPhone. Во второй год такой целью для обоих был игровой компьютер с мощной видеокартой (своего компа у них не было, игрались на гаджетах плюс иногда на моём Макбуке в Майнкрафт). Они копили на него деньги (откладывали свою зарплату плюс деньги, которые им дарили на дни рождения), и я пообещал им добавить свои на день рождения младшего (будет в следующем месяце), если они целый год (с 1 сентября по 31 августа) будут хорошо заниматься. Они были молодцами, и я сейчас им купил навороченный комп с GeForce RTX 2080 Ti, навороченный монитор, гейминговыю клаву и мышку и т.д. На днях всё должно прийти с Амазона, они счастливы. Но дальше нужны будут деньги на покупку игр, поэтому они уже подсчитывают, когда они смогут их купить ;)).

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

    Не знаю, подойдёт ли вам мой рецепт, но у меня он пока работает )). Они, кстати, очень гордятся, что они не просто так получают деньги от родителей, как их одноклассники, а зарабатывают их, причём не руками, а умом.
  • Splunk уходит из России (совсем)
    +2
    Не читайте фейковых пересказов, даже если они опубликованы на сайте с названием православие.ру. Лучше всегда изучать первомсточники. Апостол Петр мытарем (налоговиком) никогда не был. Когда он встретил Иисуса, он работал рыбаком.
  • Мышление в стиле Ramda: Первые шаги
    0
    Классная серия получилась у вас, спасибо. Обнаружил в Rambda кучу хаскелльных функций, которые я прекрасно знаю. Буду их теперь использовать в JS ;).
  • Как умные контракты изменят нашу жизнь
    0

    Погуглите по ключевым словам "zero knowledge proof", это решает поднятую вами проблему и уже сейчас имплементировано в криптовалюте zCash.

  • Доктор Мошенник: взлёт и падение знаменитого учёного, обманувшего почти всех
    +2
    Для начала вам придётся провести кучу исследований сначала на животных, а затем — через несколько лет (как минимум) после этого — на людях. А потом подождать ещё несколько лет (как минимум) — и получить разрешение властей на использование вашего материала. И вот тогда вы сможете его монетизировать.

    Медицина — это крайне зарегулированная (и обоснованно зарегулированная) сфера деятельности. Прежде, чем внедрять ваш материал в организм человека, вам придётся доказать как минимум отсутствие от него вреда здоровью животных, беременных животных, затем экспериментальных пациентов, беременных экспериментальных пациентов, экспериментальных пациентов в пожилом возрасте, экспериментальных пациентов юного возраста, отсутствие нежелательных реакций в сочетании с антибиотиками, пищевыми продуктами и т.д.
  • Снижение беспошлинного порога до 20 евро – уже в проекте федерального бюджета на 2018-2020 гг
    +2
    Я живу в Европе (Италия). Заказы делаем в подавляющем большинстве случаев в европейских магазинах (на Амазоне, конечно, чаще всего). Покупаем онлайн почти все непродовольственные и нехозяйственные (типа стирального порошка, туалетной бумаги и т.д.) товары — от столов и стульев до одежды, электроники и школьных рюкзаков для детей. Если магазин итальянский — привозят в срок до 3 дней, если, скажем, немецкий — бывает и неделя. Блендер Мулинекс, заказанный из Амазона, прислали из Франции. Зарядку для макбука, производимую американской компанией в Калифорнии, эта американская компания прислала со своего европейского склада (кажется, из UK, но точно не помню). Поскольку европейский рынок большой, многие производители держат склад в какой-то из европейских стран, чтобы покупатели не заморачивались с расчётом пошлин и была более оперативной доставка.

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

    На Алиэкспрессе заказывал 2 раза: трипод с гнущимися ножками для съемки с телефона и новый чехол для своего макбука. Оба раза сумма была меньше 22 евро, поэтому просто получил посылку как обычно и всё. Доставка, правда, слишком долгая — 40-50 дней ждать. Пару раз думал заказать на Алиэкспрессе что-то ещё, но потом заходил на Амазон, и оказывалось, что там китайцы продают то же самое по тем же самым ценам (что меня удивило — но факт есть факт). При этом и доставка гораздо оперативнее.

    Так что не надо сравнивать Россию с Европой. Во-первых, Европа огромная, внутри ЕС торговля беспошлинная, а Германию и Францию, как производителей товаров, не сравнить с Беларусью и Казахстаном. Во-вторых, очень многие производители не из стран ЕС имеют склад в одной из европейских стран, т.к. рынок огромный, конкуренция большая, и они так увеличивают свою конкурентоспособность. Ну, а в-третьих, даже когда надо заплатить пошлину, это отнимает, конечно, деньги, но не приносит никакого дополнительного геморроя — просто платишь наличными или с карточки почтальону, который принёс посылку, и всё.
  • Теорема Байеса: из-за чего весь сыр-бор?
    0
    Закончим подсчёты. Чтобы получить P(E), сложим истинные и ложные срабатывания, получим 0,0198, поделим на это 0,0099, и получим 0,5.


    Если вы поделите 0,0198 на 0,0099, то получится 2, а не 0,5. Здесь аргументы перепутаны местами.
  • Жаргон функционального программирования
    +2

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

  • Жаргон функционального программирования
    +4

    Термины программировать не помогают, а вот концепции, которые называются этими терминами — очень даже.


    Возьмём функтор. Например, есть значение какого-то типа, обёрнутое в какой-то другой тип (Optional, List, Array… — во что угодно). И у вас уже есть функция fun1, которую можно применить к тому типу данных, который находится внутри обёртки (назовём этот тип Int). Но эту функцию нельзя применить к типу Int, который находится в обёртке (скажем, эта обёртка Optional). А вам это нужно. И вот вы пишете функцию fun1Optional. Можете вы её написать, не зная термина "функтор"? Какие проблемы — конечно можете!


    Но тут у вас возникает задача сделать так, чтобы функция fun2, работающая со значениями типа Int, тоже могла работать со значениями Optional Int. И чтобы функция fun3 тоже так могла работать. И fun15. И вот вы пишете функции fun2Optional, fun3Optionalfun15Optional… Можете? Конечно, почему нет? Не зная ни о какой концепции, называемой термином "функтор".


    Но если вы знаете о такой концепции, то вместо того, чтобы переписывать вручную кучу функций, работающих с типом Int, чтобы они работали с типом Optional Int, вы просто делаете обёрточный тип Optional функтором, определяя для него всего одну функцию map (или fmap — это одно и то же), которая принимает в качестве первого аргумента функцию, работающую с типом Int, в качестве второго аргумента — значение Optional Int, и применяет эту функцию Int -> ВоЧтоТоЕщё (которая уже имеется у вас!) к значению типа Int внутри обёрточного типа Optional. В результате вам не надо писать кучу функций fun1Optionalfun15Optional, а достаточно написать одну единственную функцию fmap для обёрточного типа Optional. И наличие у обёрточного типа Optional функции fmap делает его функтором.


    Более того: наличие функции fmap позволяет вам использовать уже имеющиеся у вас функции не только со значениями типа Optional Int, но и с Optional Float, и с Optional String, и с Optional Bool — и т.д. Просто потому, что вы сделали обёрточный тип Optional функтором — путём определения для него всего одной функции.


    Можно ли программировать без знания концепции функтора? Конечно можно! Просто у вас будет меньше code reuse, больше определений новых функций, а ваш код будет сложнее читаться, рефакториться и дебажиться. Помогает ли знание концепции "функтор" программировать? По-моему, да.

  • Как попасть на работу в международную ИТ-компанию?
    +1
    Было бы гораздо полезнее, если бы non profit организации выкладывали ТЗ на те задачи, что им требуется сделать (разбивая их на относительно небольшие), а компании выбирали бы оттуда тестовые задания для соискателей. И некоммерческим организациям хорошо, и соискатель чувствует, что благое дело делает, а не пишет что-то бесплатно для потенциального работодателя, и работодатель видит навыки соискателя. И даже портфольо у соискателя формируется без публикации кода — в виде реально выполненного проекта.
  • Новая редакция популярного бесплатного учебника электроники, архитектуры компьютера и низкоуровневого программирования
    0
    А с каких пор Киевский национальный университет стал «ведущим российским ВУЗом»?
  • Эффект Доплера помог физику из Казани успешно оспорить штраф ГИБДД
    +1
    The Proof of Innocence

    Dmitri Krioukov

    A way to fight your traffic tickets. The paper was awarded a special prize of $400 that the author did not have to pay to the state of California.
    In view of enormous, extremely surprising and completely unexpected public interest to this work, we have added an appendix answering the two most common questions.
  • Программисты на C — самый большой разделённый народ в мире?
    0
    С чего вы взяли, что я (автор этой заметки) — редактор Хабра? Я такой же пользователь, как и вы. И в заметке приведены все необходимые ссылки для того, чтобы можно было узнать продолжение непосредственно у первоисточника, если это интересно.
  • Программисты на C — самый большой разделённый народ в мире?
  • Программисты на C — самый большой разделённый народ в мире?
    +3
    Вы можете быть татарином и не зная татарского языка.

    Вообще, в современном мире национальность определяется самоидентификацией. Вы сами должны определиться (если хотите), кто вы больше — русский или сишник.

    При переписи населения вас просто попросят указать, кто вы по национальности, не вдаваясь в подробности национальностей бабушек или дедушек, а если вы не захотите говорить переписчику свою национальность, настаивать не имеют права.
  • Программисты на C — самый большой разделённый народ в мире?
    +6
    «Этничность можно представить как форму общественной организации культурных различий, состоящей из тех характеристик, которые сами члены этнической общности считают для себя значимыми и которые лежат в основе их самосознания. К этим характеристикам относится также обладание одним или несколькими общими названиями, общие элементы культуры, представление об общем происхождении и, как следствие, наличие общей исторической памяти.…

    Определение этничности строится также на основе культурной самоидентификации этнической общности по отношению к другим общностям (этническим, общественным, политическим), с которыми она находится в фундаментальных связях.» https://ru.wikipedia.org/wiki/Этнос

    «Этнос — исторически сложившаяся этническая общность — племя, народность, нация.

    Нация — исторически сложившаяся устойчивая общность людей, образующихся в процессе формирования общности их территории, экономических связей, литературного языка, особенностей культуры и духовного облика.» С. И. Ожегов
  • Security Week 04: дыра в WiFi софте Lenovo, конф-колл-бэкдор, Amazon раздает HTTPS бесплатно
    0
    В «Voyage de condom» презерватив никак не мог достигнуть океана, т.к. Каспийское море, в которое впадает Волга — это озеро, не соединённое с океанами.
  • Комментарий к «Как попасть на дачу президента в пять часов утра»
    +3
    Про то, как сертифицируют, я помолчу. Достаточно знать, как стандарты разрабатываются, по которым потом сертификация происходит.
  • «Страшные» абстракции Haskell без математики и без кода (почти). Часть I
    +1
    Планирую выделить время на продолжение после НГ.
  • «Страшные» абстракции Haskell без математики и без кода (почти). Часть I
    0
    Не уверен, о чём именно вы говорите, но, мне кажется, вы описываете монадные трансформеры. Они позволяют оборачивать вычисления сразу в несколько монадных обёрток одновременно.
  • «Страшные» абстракции Haskell без математики и без кода (почти). Часть I
    0
    На большее количество картинок меня не хватило, увы. Но я бы посоветовал вам после прочтения этой статьи посмотреть вот эту презентацию: там картинок больше, и они, как говорится, в тему. Может, это позволит вам лучше понять хаскельные абстракции.
  • Почему наши высокоуровневые языки до сих пор не такие уж и высокоуровневые?
    +3
    Но при этом вы очень удивите людей, живущих вне экс-СССР, когда захотите выйти из лифта на первом, а не на нулевом этаже.
  • Почему наши высокоуровневые языки до сих пор не такие уж и высокоуровневые?
    0
    Почему индексация начинается с нуля? Потому что именно 0 это точка отсчёта, а не 1. Когда у вас будут детки, и вы будете учить их считать, используя числовую шкалу, вы поймёте, почему индексация начинается с нуля. Когда ваши детки будут ставить карандаш на единицу, чтобы от неё отсчитывать нужное количество чисел, а вы будете сдвигать его на 0, объясняя, что именно оттуда всё начинается, вы поймёте это очень хорошо ;)).
  • «Страшные» абстракции Haskell без математики и без кода (почти). Часть I
    +4
    В статье немало неполных ответов и сознательных упрощений. Если бы не они, получилось бы не статья, а книга, которая никогда бы не вышла по причине нехватки времени на её написание ;)). Я и так эту статью несколько месяцев рожал, пока, наконец, не собрался, и не дописал, выделив на это пару дней практически целиком.
  • «Страшные» абстракции Haskell без математики и без кода (почти). Часть I
    +1
    Практическое применение простое, и в основном люди как раз жалуются, что они применяют монады, но не понимают их. Если очень кратко, то все монады можно условно разделить на 2 части.

    Первая часть в качестве «чего-то ещё» содержит некоторый маркер, относящийся к «основным» вычислениям — он говорит на об успешности или неуспешности вычислений, о наличии или отсутствии ошибок в вычислении, о том, что у нас может быть 0 результатов или же очень много результатов. Т.е. в этих монадах мы не манипулируем с «чем-то ещё», а просто «смотрим» на него и, в зависимости от его значения, применяем одно или другое уравнение, описываемое оператором (>>=). Мы просто пишем код, как будто вычисления успешны (или у нас более нуля результатов вычислений), а неуспешные случаи вычислений обрабатываются автоматически. Грубо говоря, эти монады позволяют нам не писать кучу вложенных if then else и ручных манипуляций с разветвляющимися вычислениями.

    Вторая часть предполагает «более материальное» «что-то ещё», которым мы можем манипулировать напрямую. У всех таких монад есть функции типа get и put (а также выводимая из этих функций функция modify). В разных монадах они могут называться по-разному, но суть их одна и та же: вы можете получить текущее значение внешнего окружения (состояния), произвести с ним какие-то манипуляции и заменить текущее значение новым его. В монаде IO, правда, функции get и put размножились, потому что мы можем хотеть получить строку или символ, хэндл, название директории и т.д., но суть их точно такая же. А работа с этими монадами заключается в реализации нужного вам алгоритма в do-блоке, в котором вы композируете эти функции и функции, работающие со значениями ваших основных вычислений, так, как вам нужно.

    Что касается чистых функций, то вы их просто применяете внутри do-блока к значениям состояния и «основных» вычислений, которые вы «вытащили» из обёртки. Они производят вычисления, а затем возвращают результат обратно в вашу обёртку (в do-блок, откуда пришли их аргументы).
  • «Страшные» абстракции Haskell без математики и без кода (почти). Часть I
    0
    Возьмём вот эту строчку, и представим, что x у нас является выражением типа (2 + 3) * 5:

    result1 x = (factorial x) * (factorial (x - 1)) * x
    

    У нас все переменные x будут ссылаться на thunk, содержащий это невычисленное выражение. Вычислено оно будет тогда, когда понадобится один из этих x. Как только один из иксов понадобится, выражение (2 + 3) * 5 будет заменено в памяти на 25. А поскольку на этот участок памяти ссылаются все иксы, то они автоматически будут ссылаться уже на 25.

    P.S.: факториал понятнее и эффективнее выражается следующим уравнением: fac n = product [1..n] :)
  • «Страшные» абстракции Haskell без математики и без кода (почти). Часть I
    0
    В этой статье описываются дополнительные способы мемоизации. А вообще, когда вы в каком-то выражении используете «переменную», то она, благодаря ленивой природе языка, не вычисляется сразу, а сохраняется в виде так называемого thunk (отложенное вычисление). А переменная содержит ссылку на этот thunk. Другие переменные с тем же именем, содержат ссылку не на свой отдельный thunk, а на тот же. Когда thunk вычисляется, он заменяется вычисленным значением. А значит, другие переменные, ссылающиеся на него же, не должны вычислять его снова, а берут уже вычисленное значение.
  • Проблемы, вызванные определением кортежей как функторов
    0
    Вы забываете о том, что у вас в кортеже могут быть значения совершенно разных типов. Давайте попробуем представить, что компилятор позволил вам реализовать fmap для тройки так, как вы хотите, и попробуем применить fmap (+1) к тройке:

    fmap (+1) (True, "string", 2) == (True + 1, "string" + 1, 2 + 1)
    

    Какой результат вы хотели бы получить в этом случае?

    Теперь понятно, почему функтором можно сделать только однопараметрический тип (или многопараметрические, но частично применённые до однопараметрического)?

    Если бы кортежи могли содержать значения только одного типа, то у вас всё бы получилось.
  • Высосанные из пальца стартапы, которые ничего не решают
    0
    Высокомотивированный человек сможет обучиться и по скучно написанным книжкам, я согласен. Но в игровой (или, скажем шире — в развлекательной) форме обучение привлекательно и доступно для гораздо большего количества людей. Мой шестилетний сын, который учится в первом классе, с большой неохотой садится за домашние задания, в том числе по математике. Но при этом он всего за час в игровой форме научился преобразовывать числа из десятичной системы исчисления в двоичную и наоборот (по методике Я. И. Абрамсона) — и делает это с удовольствием, так как мы «не занимаемся скукотенью», а играем в кубики.

    Edutainment — это то направление, в котором обязательно будет прорыв, и в котором те, кто найдут работающие механизмы, заработают много денег. Даже если человек высокомотивирован и может научиться по скучным книжкам и разбираясь в чужих проектах, он, при прочих равных, выберет более увлекательный и захватывающий способ получения знаний.
  • Высосанные из пальца стартапы, которые ничего не решают
    +2
    Это ваше мнение, и не следует его считать оценкой продукта рынком. Я знаю множество не начинающих девелоперов, которых эта игра захватывает, и которые улучшают свой код, пытаясь написать более элегантное и эффективное решение, сравнивая его затем с кодом, написанным другими игроками. У проекта есть многочисленная аудитория — это факт, и данный факт говорит о том, что он нужен людям. И даже если принять ваше мнение по поводу того, что этот проект не развивает навыки, необходимые программисту (с чем я не согласен), то бизнесом называется не то, что обязательно полезно, а то, что востребовано (а это уже можно пытаться монетизировать). Angry Birds, например, заставляют только бесполезно тратить время, но от этого бизнес компании Rovio не перестает быть бизнесом.
  • Высосанные из пальца стартапы, которые ничего не решают
    +2
    Check.io — офигенный стартап. И по моему мнению, и по мнению инкубатора Techstars, из которого он выпустился, и по мнению Гвидо ван Россума, который к нему присоединился, и по мнению множества крупных и известных компаний, которые сделали в этой программистской игре свои острова. Это — будущее онлайн-образования.
  • Если вы решили перейти с PHP на Python, то к чему следует подготовиться
    +1
    Haskell:

    [2,4..10]
    

    Или, если последовательность более сложная — например, числа от 1 до 100, кратные 3 и 5 одновременно — то на Haskell это выглядит так:

    [x | x <- [1..100], x `mod` 3 == 0, x `mod` 5 == 0]
    
  • Ликбез по типизации в языках программирования
    0
    Примечание: я намерено использовал некаррированную функцию, а также намерено записал частную сигнатуру вместо более общей add :: (Num a) => a -> a -> a*, т.к. хотел показать идею, без объяснения синтаксиса Haskell'а.

    Если вы используете кортеж, то сигнатура функции будет:

    add :: (Num a) => (a, a) -> a