• Сложность простоты
    +3
    Собственно, вот пример решения задачи на скале

    Выглядит чуть грязнее, чем на хаскеле, но суть похожа
  • Сложность простоты
    +21
    На самом деле, ситуация страшная. Го, вроде как, позиционируется как простой и быстрый в освоении язык, но, когда человек с опытом двух огромных (Rust, C#) языков не может справиться с простой задачей на 20 минут и сталкивается с проблемами чуть ли не с первых строк, к чему придет новичок, для кого Го станет первым языком? Какое качество продукта в результате выйдет?
    Да и зачем тогда нужен Го, если со своим назначением (простота и легкость обучения) он справиться не может, а другие языки решают те же задачи лучше и с меньшим количеством проблем?
  • Зачем нужны виртуальные функции
    +4
    Зачем нужны виртуальные функции?

    Для реализации возможности переопределения поведения функций базового класса, а не для того, про что написано в статье.
    Код в статье заявлен как более типобезопасный, чем код на кастах, и при этом содержит как минимум три нарушения принципов SOLID.
    1. Принцип единой ответственности — Node самостоятельно открывает другие ноды и кладет их куда-то
    2. Принцип подстановки — Что сделает виртуальный метод open_paragraph в ноде Link? Упадет с исключением «Not Implemented/Supported»? Отличное нарушение контракта базового класса
    3. Принцип разделения интерфейсов — туда же, куда и первый пункт, когда у нас Node «поддерживает» сразу ВСЕ типы дочерних нод и «умеет работать» с ними
    Ни код на кастах, ни на виртуальных функциях не является приемлемым, однако первый, хотя бы, логически правильный.

    P.S. Отличный прием сократить второй пример в два раза, чтобы показать разительную разницу в объеме кода, который на деле не изменился практически ничем
  • Может ли в JavaScript конструкция (a==1 && a==2 && a==3) оказаться равной true?
    +4
    А заминусовали меня скорее всего потому, что я скопипастил этот код из своего ideone, который содержал слово, которое даже матом не считается, и не успел быстро отредактировать.
    Первый минус проставил тот, кто увидел, а второй кто-то «НУ ПОТОМУ ЧТО ТУТ МИНУС СТОИТ, ЗНАЧИТ ПЛОХОЙ КОММЕНТ, НАДО ТОЖЕ МИНУСНУТЬ»
    Вот и пиши после этого комменты вообще
  • Может ли в JavaScript конструкция (a==1 && a==2 && a==3) оказаться равной true?
    +12
    #include <stdio.h>
    
    #define a (__COUNTER__+1)
    
    int main(void) {
        if (a == 1 && a == 2 && a == 3) printf("123123123");
        return 0;
    }
  • Интересные вопросы на знание C# и механизмов .NET
    0
    static int rand3() => 
        (int) ((rand2() + rand2() * 2 + rand2() * 4 + rand2() * 8 + rand2() * 16 + 
                rand2() * 32 + rand2() * 64) / 128.0 * 3);
    
  • Приключения ножниц в цифровом мире (пара строк о DevelStudio)
    0
    Для всех этих людей сделали бесплатную полнофункциональную Visual Studio, а они продолжают есть кактус писать десктопные приложения под Devel Studio на PHP