Быть настоящим и писать код VS перебирать и казаться

    Отличный фреймворк!
    Простой, чистый, производительный!
    Так на его могиле и напишем...

    image

    Полсотни интернет-зависимых не спят. Прижав тощие и не очень задницы к стульям, они флудят в самописном чатике. Удовольствие стоит 6 рублей в час (цена «городского интернета» в далеких
    2000-х с одним сервером на город-полумиллионник).


    На это хватало сэкономленного на студенческих обедах. На выход в Глобальный Интернет по 33 рубля (хренасе!) в час — уже нет. Писк модема на 33600. Ночь.



    Самое главное — на сервер можно зайти по FTP и выложить на всеобщее обозрение свое Ясделие. Свой сайт. Или чат. Или что ты там еще придумал. И кто-нибудь обязательно туда придет, посмотрит и оценит. И ты увидишь это на счетчике посещений (предтеча лайков размером 88×31).


    В стеке технологий (правда, тогда слово «стек» употребляли с чем-то вроде «push ax») у нас было много всего:

    • PHP3, который еще не успели охулить (или успели, но в «городском интернете» про это никто не знал).
    • HTML4, который не во всех тогдашечных браузерах умел рендерить таблицы.
    • CSS-1.0 — магия.
    • JavaScript, который ламеры путали с Java.
    • Шестая чашка дрянного нескафе-голд.

    Эти технологии были потрясающими. В прямом смысле. Например, JavaScript мог трясти окнами браузера и открывать десять тысяч окон, отправляя в нокдаун неугодного пользователя чата. Нынешние фреймворки так не умеют.


    image

    Но через пару лет пришли хулители из Java (которая не Script) и рассказали, что все, что мы делаем — дерьмо. И на сервере код наш — дерьмо. И на клиенте — дерьмо. И браузеры наши — дерьмо. И вся веб-разработка дерьмо. Впрочем, доля горькой правды в этом была. Браузеры того времени и впрямь были удивительными механизмами.


    Кладбище фреймворков. Начало


    Глотком свежего воздуха стал Prototype (кто-нибудь помнит этот фреймворк?). Было так круто писать вместо document.getElementById что-то типа $()!


    Вот только Prototype расширял функционал базовых объектов. А это посчитали дерьмовым. И старичок загнулся практически сразу, как появился jQuery.


    Меня это бесило дня два. Мне нравилось писать

    $("id").style.color = "#FFF";

    вместо

    $("id").css({color: "#FFF"});


    Но кто-то сказал, что это плохо, и я пересел на jQuery. Многие пересели.


    Prototype оказался только шлюзом в мир, полный настоящего, вонючего дерьма! Оно хлынуло потоком. Маленькими кусками вроде mootools, который реально где-то полгода делал вид, что он конкурент jQuery и Prototype. И большими кусками вроде Dojo (кто это помнит?!), Yahoo! UI Library (в итоге — Extjs).


    Нам нужен был MVC (или HMVC?), и у нас появился выбор: Backbone, CanJS, Knockout и еще десяток новых каждую неделю. Нам надоел CSS, и снова мы могли выбирать: Less, Sass, PostCss. Кто-то сказал, что JavaScript — дерьмо, и так появился CoffeeScript, и меня реально убеждали, что надо писать именно на нем, ибо прогресс! Блин, ну и где он теперь?!


    image

    TypeScript. ES6. Отлично, JavaScript стал типизированным, но перестал работать в браузере: теперь его приходилось компилировать. И не только его. Много-много рутинной магии на сервере.


    Поэтому появились автоматизаторы рутинной серверной магии по типу Grunt, Gulp, Broccoli, Webpack. Меня выворачивало наизнанку от синтаксиса Angular, и я был рад сплясать на его могиле, когда появился React (к которому нужен был Redux). Даже Vanilla JS, фреймворк в 25 байт в сжатом виде, на фоне общего зоопарка выглядел не так плохо.


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


    Бывало, начинаешь проект с новыми и хайповыми технологиями и методологиями, а заканчиваешь уже с отстойными. Хотя по сути ничего не менялось, разве что появлялась парочка статей на хабре «Почему ангуляр — отстой» и «Scrum умер и больше не работает». Проект, работа и даже собственная компания казались отстоем просто потому, что кто-то сказал «MVC — для лохов!».


    Не быть лохом


    Правда в том, что большей части разработчиков фиолетово на сам проект. Куда важнее чувствовать себя «в тренде». Не быть лохом. Поэтому часто хипстерскость технологии — решающий фактор в выборе работы. И мало кто из работодателей сознается, что набирает людей для поддержки унылого проекта на фреймворках полугодовой давности.


    image

    В вакансиях студии выпячивают только те технологии, которые не успели обрасти разгромными отзывами. Мы тоже так делали и прятали под стол гадости вроде лучших отечественных CMS-систем. Да мы даже обернули её Zend-ом, чтобы клиенты радовались маркетинговому трепу про мощность админки, а мы — пользовались MVC, не особо мучаясь.


    Мы в студии не в самом плохом положении — можем экспериментировать и менять технологии как перчатки. У нас негласное правило — на новом проекте попробуй новую технологию. Стек всегда остается более-менее актуальным. Но глобально это не решало вопрос. Не все проекты заканчиваются сразу после релиза, ага.


    Разнообразие мнений породило проблему выбора и обучения junior-ов. Я собеседовал людей, которые на полном серьезе говорили, что учили Angular, а не JavaScript. Ай хэйт ю, агнуляр.


    Я видел разработчиков, которые считали, что умеют писать «на jQuery» — точнее, они могут найти подходящий слайдер и воткнуть его на страницу. И (цитирую дословно) «настроить под себя». Эти люди гордо именовали себя «jQuery-интеграторы», но не могли отсортировать список значений в select-боксе. Они беспокоились, что разговор зайдет о чем-то, что может быть сложнее «интеграции плагинов» (точнее, занятий, которые они почему-то считают «программированием»). Когда их просили написать чуток кода на бумажке без копипасты с гитхаба, их поры сочились гормонами сжиженного стресса.


    Но черт возьми! Не они в этом виноваты!


    Не читай срачи, а трогай ручками


    Как-то вечером я захотел сделать небольшой проект для души: сайтик с простым бэкэндом и кое-каким интерактивом на Javascript. И решил предварительно посмотреть, на чем сейчас модно писать. Господи, зачем я это прочитал...


    [Разработка → Каково оно учить JavaScript в 2016 перевод]


    Мой проект не закончен до сих пор. Кажется, скоро я открою стартап или начну искать ко-фаундера.


    Сейчас в арсенале нашей студии:


    • jQuery + CanJS + Less + Gulp на одних проектах;
    • и React + Redux + Babel + JSX + ES6 + Browserify + PostCSS + Webpack на других.

    Но я не знаю, сколько времени осталось, пока они не вошли в категорию «X — дерьмо!».


    Если ты талантлив и одарен, у тебя, скорее всего, есть и обратная сторона этих ништяков — ты слишком умный. Ты оптимизируешься, экономишь силы. Перестаешь изучать и пробовать технологии на практике. И все больше полагаешься на стороннее мнение. Становитесь зашоренными. Изучение и применение технологии заменяешь чтением веселой статьи на хабре про то, что она — отстой.


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


    Сингулярность ближе, чем ты думаешь. Избегай зашоренности. Меньше полагайся на чужое мнение. Смотри сам. Изучай сам. И попробуй потрясти этот мир. Всмысле

    window.moveBy(x, y)

    :)

    Поделиться публикацией
    Комментарии 155
      +10
      Спасибо! Как увидел Масяню, аж чуть не всплакнул…
      По теме — автор абсолютно прав. Огромное количество людей сейчас учат технологии, а не алгоритмы и языки. Такой «тренд» во всех сферах.
        +2
        Может все потому что в огромном кол-ве мест требуется «скачать и подключить jq плагин» и на этом все? Много ли где в вебе требуется больших знаний, кроме самой платформы?
          +4

          Вы будете удивлены, но новые серии Масяни продолжают выходить до сих пор. От того же автора. http://www.mult.ru. Последняя серия вышла 1 июня 2016 г.

            0
            Класс, даже не знал. Пойду досматривать упущенные годы.
            Мне казалось Масяню перестали рисовать году 2006… Хотя уже и не вспомню сейчас всех подробностей.
              0
              Простите за оффтоп. Смотрю Масяню на ютубе, на её канале. Но так же на канале самого Олега Куваева (создатель) выходит много Масяньского контента. Последний, вполне годный ролик вышел за день до вашего комментария.
              Последний, вполне годный ролик


        • НЛО прилетело и опубликовало эту надпись здесь
            0
            Prototype (кто-нибудь помнит этот фреймворк?).


            Шёл из коробки с symfony В поддерживаемом проекте году этак в 2012 заменён на jQuery.

            Dojo (кто это помнит?!)


            Не далее как в начале этого года предлагали переписать проект на Symfony 2.3 c Dojo на фронте на Symfony 3 + React
              0
              >Когда их просили написать чуток кода на бумажке без копипасты с гитхаба

              Хотелось бы узнать смысл, что вы хотели узнать этим тестом?

              И что, по вашему мнению, показывает присутствие/отсутствие этого навыка?
                0
                Сможет ли человек интерпретировать код, или будет дрюкаться между парой мониторов (с штормом и браузером), надалбывая CTRL+R, в надежде, что очередной кусок копипасты заработает как надо :) В прочем, ctrl+r многие уже автоматизировали…
                  +4
                  Бывает и обратная проблема, когда программист три дня изобретает велосипед вместо того, чтобы нагуглить существующие решения и попытаться их понять.
                    0
                    Да, но это другая проблема. По-моему инженерного решения не имеет.
                      +2
                      А мне кажется, решение в научном подходе. Есть проблема, изучи историю вопроса, проанализируй существующие решения, сделай свое на их основе. Если истории вопроса нет, проблема уникальная. Тогда только начинай изобретать. Но мне за время работы во front end такие случаи встречались считанные разы.
                      В общем не вижу ничего плохого в копипасте, точнее в осознанном использовании готового кода. Только вот, чтобы набить скилл читать код с листа, нужно пару лет подолбить CTRL+R.
                    0
                    >Сможет ли человек интерпретировать код

                    Может тогда стоит попросить его объяснить, что делает тот или иной код?

                    А тест по созданию кода проверить также — дать тест и пусть делает как хочет.
                    Или интересует сам метод создания кода?
                  • НЛО прилетело и опубликовало эту надпись здесь
                      +1
                      >Мой личный опыт показывает, что люди, претендующие на позицию мидла и выше заслуженно, пишут код на бумажке с легкостью. Все без исключения.

                      Может мидлы которые работают с одним языком и обладают подобным качеством.
                      Но очень сомневаюсь, что сеньеры плотно знакомые с 5-10 языками и 3-4 платформами, по 2-5 лет практики на каждом, смогут писать код ручкой.

                      Кто помнит как в winapi получить scan code и преобразовать в wchar текущей кодировки? Например на delphi.
                      Или что именно настраивать в адроид Intent, что бы передать URL в другую APK.
                        +4
                        очень сомневаюсь, что сеньеры плотно знакомые с 5-10 языками и 3-4 платформами, по 2-5 лет практики на каждом, смогут писать код ручкой

                        Напрасно сомневаетесь.
                        • НЛО прилетело и опубликовало эту надпись здесь
                            0
                            Давай проверим.
                            Задача Delphi на форме отловить wm_keydown, и при нажатии клавиши вывести символы которые соответствуют этой клавише для всех используемых языков системы.
                            • НЛО прилетело и опубликовало эту надпись здесь
                                +5
                                Т.е. написать код вы не можете.

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

                                Как-то слабо коррелирует с
                                «Мой личный опыт показывает, что люди, претендующие на позицию мидла и выше заслуженно, пишут код на бумажке с легкостью. Все без исключения.»
                                • НЛО прилетело и опубликовало эту надпись здесь
                                    0
                                    И какие это языки? Надеюсь С++ там есть?
                                    На любой платформе, любом IDE.

                                    Копирование в буфер клавиатуры текста в HTML формате, где каждое 2е слово italic.
                                    Ну и если позволят знания, то с добавлением имиджа в середину текста.

                                    Если сложно, то загрузка указанного ХМЛа, подсчет количества русских букв «я» в этом хтмле.

                                    ps
                                    спорим, что код никто так и не увидит.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                        +1
                                        Вообще-то разговор шел про С++.
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                            0
                                            я буду это писать на C, а никак не на C++. По той же простой причине, по которой я не ем на завтрак картон: я не дебил.

                                            А можно поподробнее расшифровать вашу мысль? Чем вам не угодил (вообще или в данной ситуации) C++?

                                            • НЛО прилетело и опубликовало эту надпись здесь
                                              –1
                                              Ну вот мой тест:
                                              «И какие это языки? Надеюсь С++ там есть?»

                                              >я буду это писать на C, а никак не на C++

                                              Без проблем С тоже подойдет. Упростим задачу, HTML файл локальный.
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                  +1
                                                  Не я же говорил, что здорово тестировать написание кода на бумажке, и не я утверждал, что сеньеру как 3 байта переслать.
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                      +3
                                                      Мне кажется, тут очень важно правильно расставить акценты. Сеньор, ходящий по собеседованиям, и правда в большинстве случаев напишет код на бумажке без проблем. Так как на собеседованиях нынче модно давать подобные задания. Стало быть, если человек всерьез ищет работу, то он этот навык постарается прокачать. Опытному специалисту это не должно составить большого труда, просто надо потратить некоторое количество времени.

                                                      А вот является ли способность написать код на бумажке подтверждением чего либо, кроме тщательной подготовки к собеседованию — это уже другой вопрос.
                                          0

                                          Не бросайтесь в крайности. На собеседовании никто не просит написать код с использованием апи. Если бы меня попросили написать на бумажке такую задачу, то на питоне я бы написал что-нибудь в стиле:


                                          buffer = ' '.join('<i>{0}</i>'.format(w) if i%2 else w for i, w in enumerate(get_current_selection().split())) 

                                          А как положить переменную buffer в буфер и как реализовать get_current_selection я бы погуглил.

                                            0
                                            А что можно тестировать написанием КОДА на бумажке без доки?

                                            Замечу не написанием блоксхемы, или описание принципа решения, а именно КОД.

                                            Что дает подобный тест?
                                              +1
                                              Подобный тест даёт понимание о потенциальном распределении времени: сколько человек будет писать код, а сколько — искать как его написать.

                                              Собственно, только от джуниоров требуется написать такой код, который сразу зработает, ну так им и задачи дают совсем примитивные: показать уровень знакомства с языком, стандартными библиотеками, самыми основами алгоритмов.
                                                +1
                                                Да очень много дает.
                                                Я ходил недавно на собеседование и как раз писал код на бумажке. Никаких проблем забываниями сигнатур API функций у интервьюверов не было. Достаточно примерно помнить что функция есть в стандартной библиотеке. А вот практические навыки твои видно просто прекрасно.
                                                Например:
                                                Решаем простую алгоритмическую задачку на java, которая свелась к fold (свертке списка). Ну я пишу 2 решения — одно циклами, другое на Stream API. Меня спрашивают — а как бы нам это сделать параллельно. Я отвечаю — можем использовать AsParallel в Stream API, но в общем это может быть медленнее(из-за кривизны Stream API), так что обязательно надо бенчмаркать. Просто смотря на код — фиг поймешь быстрее будет или медленнее.
                                                Интервьювер сразу видит что я и код написать могу 2х стилях (функциональный и императивный) и то что неплохо знаю стандартную библиотеку java и границы применения ее API
                                                Ну и если вы дете в команду интервьювера -ему же интересно как вы там КОД писать будете. Как переменные назвать (a, b, c или что-то более осмысленное), как методы. Насколько легко ему будет понять — что вы пишете.
                                                Так что — имхо писать код на бумаге во время собеседования — одна из самых логичных практик.
                                                  +1
                                                  Почему просто не ответить, что есть два решения, у каждого такие то плюсы и минусы?

                                                  >переменные назвать (a, b, c или что-то более осмысленное), как методы.

                                                  На бумажке? Давать реальные названия переменным и функциям?
                                                  Да это какое-то садомазо.

                                      0
                                      Это ищется за 5 минут или быстрее. Либо среда подсказками поможет, либо хелп. А вот нормально сделать иерархию классов, не знаю, многопоточку — вот тут — да — умения нужны. Знания элементарно добываются в интернетах, если хотя бы зачатки программного мышления есть. С умениями сложно.
                                        +3

                                        А вы такую задачу бы на собеседовании дали? А зачем? На какую должность?


                                        Я когда собеседовался на senior C++ software developer/researcher (ну там, матана немножко, это всё), мне дали задачку «напиши, как бы ты писал парсер языка вроде JSON». Я сказал, что на бумажке на плюсах писать больно, давайте я вам на хаскеле напишу, а там обсудим, как потом это переложить хоть на Boost.Spirit, хоть на ручками запроганный рекурсивный спуск. Тем более, что с чуваком, который меня собеседовал, мы перед этим имели телефонное интервью, и минут 5-10 поговорили за жизнь, где я узнал, что он тоже по всяким таким вещам угорает. Ну а раз пишу на хаскеле, то давайте решим, можно ли мне пользоваться примитивами из Attoparsec'а, или нельзя, если нельзя — то давайте я ими всё равно воспользуюсь, просто распишу, как они работают.


                                        И всё, никаких вопросов. Потому что проверять алгоритмику интереснее и полезнее, вероятно, чем непосредственные навыки написания кода.

                                      +2
                                      Из моего опыта, в случаях, когда просят решить задачу на бумажке, можно обойтись встроенными средствами языка, в самом крайнем случае — стандартная библиотека. Хотят видеть насколько человек понимает что он пишет, как планирует заранее, как думает.
                                      +1
                                      Писать код на бумажке, безусловно, полезно. Но проблема в том, что AWS, например, не умеет запускать код с листа, а Github не принимает коммиты по почте. Так что приходится волей-неволей использовать IDE, а там и недалеко от того, чтобы в документацию заглянуть или на SO.
                                      То есть это полезное умение, но оно не релевантно бизнес-задачам.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                          +2
                                          Взять-то вы может и возьмете, только кто ж вам даст.
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                              +1
                                              Плохой критерий профессионализма.
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                +1
                                                Вы не берете людей с репутацией меньше 10к?
                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                    0

                                                    А если у человека вообще нет аккаунта на SO?

                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                              +3
                                              Время вобщем полезное тратят на ЧСВ. Открыл утром блокнот, написал пару файлов, используя какую нибудь нотацию, прописал руками комманду для компилятора со списком файлов и настройками проекта, запустил веб сервер через консоль, настроил новый хост в конфиге, написал скрипт для копирования бинарников, добавил принтов по всему коду, для дебага…

                                              Ну вы поняли. Может это и не про вас, но я таких людей встречал. Какой смысл отказываться от ИДЕ?
                                                +1
                                                Какой смысл отказываться от ИДЕ?

                                                Ну ты сейчас ящик Пандоры открыл.
                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                    +6

                                                    У меня такой глупый и стыдный вопрос: а зачем это помнить всё?


                                                    Номера телефонов и точные названия функций — это фактологическая информация, не несущая принципиальной новизны для картины мира.

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

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


                                                        Я тренирую память, потому что без тренировки замечаю отрицательную производную, а позволить себе отупеть — не могу.

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

                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                            +1
                                                            Зачем вот лично вы меня убеждаете?

                                                            Считайте, что я делюсь наблюдениями в форме вопросов или ответов на ваши утверждения.


                                                            Вам нужна?

                                                            Мне помогает. Я вполне продуктивно могу писать код в необустроенном vim, если уж на то пошло, но с IDE удобнее.


                                                            Вы бы хотя бы поинтересовались, на каких языках я пишу, для начала, если уж хотите конструктивную дискуссию.

                                                            На каких?

                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                0

                                                                Ну, у меня совсем другая ситуация. Ряд проектов только на плюсах, ряд — на хаскеле. В одном проекте два языка редко встречаются.

                                                          +1

                                                          А если вместо заучивания таблицы умножать в уме?
                                                          Для интеллекта подобные задачи полезнее чем простое заучивание.

                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                              0

                                                              Они отнимают время. Потому что пока вы в супермаркете держите в уме сумму покупок, я продумываю, как решать какую-нибудь задачку (а последнее время и в супермаркет не хожу).

                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                  +1

                                                                  Пассивно-агрессивное поведение не стоит того.

                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                      +1
                                                                      Если вы еще не окончательно ушли в астрал и продолжаете делать вид, что разговариваете со мной

                                                                      Смысл в том, что совершенно не обязательно так общаться, например.

                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                          0
                                                                          Так ведь и не я начал. Это же вы подошли со своими комментариями, построенными на выдерганных из контекста цитатах и стали мне рассказывать, в чем я ошибаюсь.

                                                                          На каких именно, по-вашему, выдерганных из контекста цитатах построен комментарий выше?


                                                                          И вообще, почему вы считаете, что мне сто́ит относиться доброжелательно к людям, которые считают приемлемым менторским тоном рассказывать, как правильно, а как — нет?

                                                                          Потому что, ну, вы сами менторским тоном тут рассказываете, как правильно?

                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                              0
                                                                              Наличие «комментариев, построенными на выдерганных из контекста цитатах» не опровергается одним контр-примером.

                                                                              Я вам изначально отвечал на этот ваш комментарий, зачем вы приплетаете сюда что-то, что, тем более, было написано после вашего ответа на него?


                                                                              Порешайте задачки, серьёзно, это полезнее, чем телефоны запоминать и мелочь считать.

                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                  0

                                                                                  Тогда в предыдущем комментарии, значит, были выдерганные из контекста цитаты? Не покажете?

                                                        0
                                                        Хмм… А может, лучше тренировать не память, а другие когнитивные способности — к пониманию, обучению и т.д.?
                                                        +3
                                                        Это типичное поведение UNIX-пользователей.

                                                        Если совсем примитивно, пользователю линукс нравится полагать, что он хозяин положения и крепко держит в руках поводья. При этом для него достаточно имитации. То есть поводья которые он держит заходят в черный ящик, а оттуда появляются с другой стороны и ведут к лошадям. Когда пользователь дергает за них, то позади ящика они вроде как в точности реагируют на его действия.

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

                                                        Пользователь Виндовза для него выглядит как жирный недалекий турист, который сидит в мягком комфортном салоне кареты позади и все команды подает не лошадям, а специально нанятому профессиональному кучеру, по рации. Вместо того, что интересоваться повадками и анатомией несущих его животных он занимается своими делами, спит, читает книги и смотрит в окно на красивые пейзажи. Вот лох. Как так можно, ехать на дилижансе и ничего не знать про лошадей?

                                                        В реальном мире (без метафор) это выглядит как следующий пример:

                                                        Допустим пользователю Винды и Линукса вдруг стало нужно поменять скринсейвер и задержку его появления.

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

                                                        Второй вызовет терминал и там напишет что-то наподобие sudo set screensaver «aqua» set delay 100000 ms (псевдо команды).

                                                        В реальности и первый и второй пользователь обратились в черный ящик через предоставленный им интерфейс и совершили абсолютно идентичные действия с идентичными последствиями.

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

                                                        Короче говоря, таким людям просто нравится набирать текст в консоли. Все.
                                                          +4

                                                          Странные обобщения. Я UNIX-пользователь и я люблю IDE и вообще купил себе CLion для плюсов.

                                                            0
                                                            Аналогично. Правда, код пишу часто отлаживая какие-то мелкие фрагменты и набивая их в простеньком редакторе. А вот всё вместе (~50000 cloc и больше) собирается и доводится уже в IDE.
                                                              –2
                                                              Окей, если я скажу «большинство UNIX-пользователей в большинстве ситуаций», тогда возражения снимаются? Просто в никсах по моему опыту почти все делается в консоли, даже то, что делается через интерфейс, тупо в силу привычки.

                                                              Хотя золотая середина имхо это IDE с шорткатами.
                                                                +2
                                                                «большинство UNIX-пользователей, имеющих отношение к серверному администрированию UNIX-систем, часто»

                                                                Fixed

                                                                Юникс-системы это и MacOS, между прочим. Более того — это самая распространенная пользовательская Unix-система. Да и без неё всякие Ubuntu всё больше используют обычные пользователи, не имеющих вообще представления о консоли ни в никсах, ни в винде. Вот у нас на несколько сотен пользователей никсов приходится несколько десятков пользователей винды (из-за специфического софта, необходимость установки винды нужно обосновывать руководству и технарям), при этом активно работают в консолях обеих систем хорошо если два десятка человек, при том, что это даже не все разработчики.
                                                                  +1
                                                                  Окей, возможно стоит пересмотреть стереотипы.
                                                            +2
                                                            TFW используешь консоль на линуксе раз в месяц для массовой конвертации аудио/видео/пикч, для чего на винде надо качать МОВАВИ YOBA КОНВЕРТЕР на сто мегабайт с сомнительным результатом или все те же ффмпег/имиджмеджик. Не считаю SSH и прочие рабочие моменты
                                                              +2
                                                              > Первый мышкой через набор менюшек, выберет нужный скринсейвер

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

                                                              > потянет ползунок на нужную задержку

                                                              Из трёх стандартных.
                                                                –2
                                                                Давайте не будем натягивать сову на глобус и исходить из того, что функционал эквивалентен. Потому что если окажемся ближе к реальности, то окажется, что в никсах человек уже давно не помнит название команды и аргументы, и лезет в поиск за ними, тогда как виндоюзер знает, что это где-то в «параметрах экрана». А дальше уже выбирает наиболее подходящий пункт меню и довольно быстро добирается. А у первого товарища наблюдается проблема, что настройка слетает после перезагрузки, а флаг «preserve» конфликтует с каким-то другим.

                                                                Просто это очень похоже на детское «я тебя убил — у меня супер-оружие… — ненене, а у меня суперброня, так что не убил. Убил — не убил. Убил — не убил...»
                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                –1
                                                                А мне понравилось обобщение. А тот факт, что есть UNIX-пользователи, использующие IDE только подтверждает пример, равно как и тот факт, что есть Win-пользователи, предпочитающие конфигурировать ОС не через меню, а меняя напрямую ключи реестра или через ту же CMD/PowerShell.

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

                                                                Впрочем, этим не только линуксоиды грешат, но и не-ИТ-шники тоже.
                                                                  +1
                                                                  Большинство пользователей unix (самая популярная — МакОсь) и unix-like (самая популярная GNU/Linux) пользуются графическими интерфейсами для пользовательских задач.
                                                                  +1

                                                                  Всё-таки не согласен. Да, многие пользователи gnu/linux именно такие, как вы описали. Но между gnu/linux и windows есть отличие, имеющее мало отношения к gui vs console. Для gnu/linux доступна куча информации о внутреннем устройстве ос и всех её компонентов. И доступны все исходные коды. В случае возникновения проблемы можно зайти в её изучении настолько глубоко, насколько вы захотите. Вплоть до самостоятельного нахождения бага и исправления memset (a, b, c) на memset (b, a, c) (условно) в коде какой-нибудь утилиты.


                                                                  Недавно у меня перестал грузиться мой дебиан. Я достал бекап ос, сделал diff между "хорошей" забекапленной версией и "плохой" текущей, долго перекидывал туда-сюда файлы, пакеты. Наконец, докапался до проблемы. Выяснилось, что почему-то исчез один каталог. Я его создал в "плохой" системе и она начала грузиться.


                                                                  Вы скажете, что всё то же самое можно сделать и в винде, пускай привлекая консоль. Допустим, но что если пойти ещё дальше? Допустим, я сделал diff на две эти системы debian, увидел, что ядро одно. Значит, ядро можно исключить из рассмотрения. Значит, дальше ребутаться между системами больше не нужно (это время отнимает), можно просто переключаться между ними с помощью systemctl switch-root или ещё чего-то в этом духе, не перезагружая ядро. Переключаться туда-обратно, таскать туда-сюда файлы, выяснять, в чём причина проблемы. Даже если бы опции switch-root не существовало бы, её можно было бы запросто написать.


                                                                  Винда может так? Сомневаюсь.


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


                                                                  Вот недавно ставил windows 7. Обновлял. В какой-то момент перестал обновляться. Обновление виснет. Вот как эту проблемы решить? В дебиане есть apt-get, он устроен относительно просто. apt-get update по сути просто скачивает несколько файлов, причём он пишет в консоль, какие именно. Можно прикинуть, в чём там может быть дело, 404 file not found или ещё чего. На крайняк открыть сорцы. В случае с windows непонятно, куда копать дальше. Пришлось поискать в инете. Оказалось, нужно вручную скачать определённые обновления и установить. Как я должен был сам до этого допереть?


                                                                  Как тут не вспомнить недавнюю историю "Билл Гейтс не смог установить Windows 8.1". И вроде у него такая же проблема была, винда в какой-то момент перестала обновляться. :)

                                                                    –1
                                                                    Не совсем понял, какое отношение преимущества опенсорса имеют к гуй вс консоль, о чем говорилось в моем комментарии… Опенсорс рулит, с этим никто не спорил нигде.
                                                                      +1

                                                                      Ну значит я вас не понял :)

                                                                        –1
                                                                        Кстати по-поводу обновления в виндовом мире давно существует NuGet, который для клиентских приложений в десятке прикрутили. Советую попробовать.
                                                                +5
                                                                Можно узнать, чем IDE в данном случае мешает думать-то? Она же не требует вводить минимум 1 строчку кода в минуту.
                                                                Просто интересует, почему ваши синьоры выбирают путь отшельников, вместо того, чтобы пользоваться вещами, ускоряющим написание кода, навигацию, поиск и рефакторинг?
                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                    +2
                                                                    Вам они ускоряют, а сеньорам — нет. Все просто.

                                                                    Действительно! Спасибо что поделились своей незыблимой истиной!
                                                                    Пойду выбью это на скале.

                                                                    Рассчитывать на диалог не вижу смысла.
                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                        +3
                                                                        Спасибо, что участвуете в диалоге (говорю без сарказма).
                                                                        Мне кажется между нами возникло недопонимание.
                                                                        Что вы вкладываете в понятие тестовый редактор?
                                                                        Правильно ли я понимаю, что ваши сеньоры не пользуются ни подсветкой синтаксиса, ни автодополнением кода, ни навигацией (например ctrl+click из IDEA)?
                                                                        Т.е. и vim и emacs с подобными возможностями мы не рассматриваем как текстовый редактор, потому что там это тоже все можно накрутить при определенном желании.

                                                                        Мне действительно интересно, как можно программировать эффективно, не имея под рукой документацию и возможности автоматизации.

                                                                        Про недостатки переиспользование способа «сейчас начну писать, а там как пойдет» я не спорю. Я не понимаю отказа от автоматизации рутинных задач.

                                                                        Я бы не прочь и статью прочитать с описанием вашей методики и наблюдений
                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                            0
                                                                            Я в какой-то момент заметил, что автокомплит, интелисэнс и автоформатирование, все эти всплывающие подсказки и бульбочки стали мешать и отвлекать от решения задач.
                                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                              0
                                                                              Вообще, еще по университету помню убеждение: «Зачем мне это учить и понимать сейчас? Я знаю, где это можно найти. Если что заново выучу». Но ни к чему хорошему это не приводит. В этом плане я с вами согласен.

                                                                              Несомненно, отсутствие базовых знаний (в том числе и разрабатываемого проекта) тормозит разработку. Это как если писать на новом фреймворке — каждый раз будешь гуглить «а как сделать X в фреймворке Y».

                                                                              Но, по моим ощущениям, ваш подход возможен в условиях разработки и поддержки очень небольшого кол-ва проектов. Либо вы занимаетесь только одним проектом в течение длительного времени и не выпадаете из его «контекста».
                                                                              Но я не представляю, как можно рефакторить и дорабатывать проекты, которые ты, например, делал год назад.

                                                                              Как у вас происходит изучение новой библиотеки/фреймворка?

                                                                              Можно узнать у вас, в какой области вы ведете разработку?
                                                                              Как выглядят задачи, которые вы решаете?
                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                  0
                                                                                  Я ответил на ваш вопрос?

                                                                                  Несомненно. Спасибо за подробное объяснение. Прошу прощения, если диалог со мной понизил вам карму.

                                                                                  Возник еще вопрос в продолжение темы.
                                                                                  Мне было бы интересно узнать, чем вы пользуетесь при обдумывании архитектуры?
                                                                                  UML, псевдокод, какой-то софт, ручка+листочек, просто размышления в голове?
                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                      0
                                                                                      Я думаю вам может быть интересно:
                                                                                      В онлайн курсе Барбары Оуклей «Научись учиться» (https://www.coursera.org/learn/learning-how-to-learn) как раз было интервью с математиком, который говорил о таком же подходе. Он часто пытается решить задачу, но если не получается, он отправляется ездить на велосипеде, или на скалодром — переключиться с задачи. И часто именно в такие моменты ему приходит решение.

                                                                                      Про modelling language интересно было бы услышать. Но, я мало знаком с этой темой, поэтому, только если у вас свободное время и желание: не могли бы вы раскрыть немного эту тему? Что пытались сделать и с чем столкнулись? Правильно ли я понял, что UML не позволяет отобразить все, что необходимо при проектировании архитектуры?
                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                    0
                                                                                    Повторю в этой ветке в сотый, наверное, раз: я нигде не утверждал, что мой опыт обобщаем.

                                                                                    Ага. «Вам они ускоряют, а сеньорам — нет. Все просто.

                                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                                        0

                                                                                        Так и человек не ваш, зачем его сравнивать с вашими сеньорами?


                                                                                        Впрочем, да, в этом проблема таких обсуждений в интернете: куски теряются.

                                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                                            0

                                                                                            С памятью-то, может, и нормально, а вот с логикой — нет. Понимаете, я не вы, и я, например, читал только процитированную часть в вашем ответе. Потому что цитата — то, на что вы отвечаете, раз уж она приведена.


                                                                                            Порешайте всё-таки задачки.

                                                                                    0
                                                                                    Вообще, еще по университету помню убеждение: «Зачем мне это учить и понимать сейчас? Я знаю, где это можно найти. Если что заново выучу». Но ни к чему хорошему это не приводит. В этом плане я с вами согласен.

                                                                                    «И понимать» тут ключевое. Если есть, что понимать, то лучше понять сейчас. А учить табличные значения, действительно, смысла мало.


                                                                                    А те вещи, что предлагает IDE, они ближе к табличным значениям.

                                                                        0

                                                                        Я исследую новую библиотеку с хреноватой документацией. Я хочу посмотреть, какие у неё есть методы с сигнатурой, похожей на Item a -> Compiler a. Почему я руками должен шастать по документации, когда IDE моей мечты могла бы мне всё это подсказать?

                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                            0

                                                                            Я так понял, что использование IDE коррелирует с более низким профессионализмом. Мне вот и интересно, почему и как.

                                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                                +2

                                                                                Как оно может отучить смотреть в код, если документация зачастую неполная или не отражает контракт полностью? А вот быстрая навигация в код, который вызываешь — всегда под рукой. Причём на любую глубину. В том числе с учётом IoC. Да и автоматически всплывающих подсказок у меня, например (с дефолтными для них настройками), самый минимум — ЧЯДНТ?


                                                                                PS ваши комментарии ну очень похожи на не осилил — значит потенциально вредно… надеюсь, что так только кажется.

                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                    0
                                                                                    не знаю уж, почему все считают своим долгом обратить меня обратно в свою веру

                                                                                    подсказка: из-за категоричности ваших суждений. Они вызывают условный butt hurt на уровне восприятия.


                                                                                    Не можете без IDE — отлично, значит IntelliJ не разорятся, а им я желаю только добра.

                                                                                    Они JetBrains


                                                                                    PS продукты MS называть IDE у меня не всегда язык поворачивается… Перегруженные, неудобные, с кучей проблем при переходе от версии к версии… По крайней мере так мне это запомнилось ещё по университету.

                                                                                      0
                                                                                      Всегда считал студию лучшей IDEшкой на рынке. IntelliJ пробовал — мне понравилось меньше. Ждем райдер, может он поборется со студией за это звание. Все-таки это не просто IntelliJ, а InelliJ + R#, а вот это уже может перевесить.
                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                      +2
                                                                      Как правило (по крайней мере на собеседованиях, где я был с обеих сторон), не требуется написать рабочий код (по сути нужен лишь псевдокод), но нужно показать:
                                                                      — навыки алгоритмизации и декомпозиции задач
                                                                      — самые начальные знания управляющих конструкций
                                                                      — знание стандартной библиотеки на уровне «есть функция/метод которые делают вот это»
                                                                      +3
                                                                      Шикарно написано, философски даже.
                                                                      Есть такие строки у Леонарда Коэна:

                                                                      The holy dove
                                                                      She will be caught again
                                                                      bought and sold
                                                                      and bought again
                                                                      the dove is never free.
                                                                      
                                                                      Ring the bells that still can ring
                                                                      Forget your perfect offering
                                                                      There is a crack in everything
                                                                      That's how the light gets in. 
                                                                        +1
                                                                        Всегда было интересно, что это за проекты такие, в которых технологии важнее предметной области? Не встречал такого, что бы знание фреймворка давало преимуществ больше, чем знание местных костылей и умение гибко, планомерно делать код лучше.

                                                                        Если брать не абстрактные холивары, а конкретную работу, то там всегда есть какой-то стек, к которому нужно подготовится. Если разработчик настолько ригидный, что вечно застревает в каком-то стеке (далеко не классическом), инфантильно ненавидит Angular2, Ember, React, etc словно это готовые коммерческие проекты, в которых кто-то кому-то должен, то это уже о чем-то говорит? Никто же не просит контрибьютить ежедневно, но поддерживать актуальное состояние знаний технологий нужно, а главное иметь фундаментальные знания, позволяющие включится в поток после перерыва без нытья.

                                                                        А нытье будет, просто потому что страшно, что, освоив один инструмент нельзя делать одно и тоже всю жизнь — но это же никак не отличается от остальных профессий. Если хочется больше стабильности, надо подниматься на уровень выше.
                                                                          0
                                                                          Dojo (кто это помнит?!)
                                                                          Я помню, он в ZF1 шёл довеском.
                                                                            +2

                                                                            Да сколько можно-то! Когда уже у вас, мерзких хипстеров, делящих фреймфорки на "старое дерьмо" и "новомодное дерьмо" выйдет из моды ныть на новые инструменты.


                                                                            Фронтенд очень быстро развивается и это хорошо, новые инструменты в среднем лучше и адекватнее старых. Всяко лучше чем 4 года ждать патч от Oracle.


                                                                            React + Redux + Babel + JSX + ES6 + Browserify + PostCSS + Webpack

                                                                            Вот тут автор жестко палится тем что нету у них такого проекта, а он просто накидал слова из гугла. Browserify + Webpack, масло масляное.


                                                                            "Главный бармалей" в веб-студии который не может написать простенький сайтик с бекендом, как это обыденно.

                                                                              0
                                                                              Не совсем понятно, что вы считаете развитием.
                                                                              Фронтэнд — это здоровенный кусок легаси с которым в обозримом будущем ничего не сделать (надеюсь я не прав).
                                                                              И все «новые инструменты» это по сути новая обертка над этим легаси.
                                                                                0

                                                                                Оберткой над чем являются React, Webpack?

                                                                                  0
                                                                                  React — над DOM прежде всего.
                                                                                    0

                                                                                    про React согласен.
                                                                                    Взамен предалагаю Babel :)

                                                                                      0
                                                                                      Babel — среда для использования оберток над JS :)
                                                                                      Webpack — обёртка над ОС/шеллом по сути :)
                                                                                    0
                                                                                    Если очень грубо, то:
                                                                                    React, Angular и т.д. оберта над HTML.
                                                                                    Babel, Typescript и т.д. обертка над Javascript.
                                                                                    less, sass и т.д. обертка над CSS.

                                                                                    Webpack с компанией отдельная история, эти тулы действительно решают свои задачи.
                                                                                      0

                                                                                      Python — это обертка над C.
                                                                                      Java — это обертка над C++.
                                                                                      C++ — это обертка над C.
                                                                                      C — это обертка над ассемблером.
                                                                                      Ассемблер — это обертка над машинными кодами.
                                                                                      Вывод:
                                                                                      Давайте сразу на машинных кодах писать.

                                                                                        +1
                                                                                        Побуду занудой:
                                                                                        С каких это пор C++ стал оберткой на C? C++ написан на C++ и не является надмножеством C, так что максимум: C++ — это обертка над ассемблером.
                                                                                          0

                                                                                          <zanuda>Были компиляторы из C++ в C </zanuda>

                                                                                          0
                                                                                          Python и Java компилируются в байткод и запусткаются на виртуальной машине (с Python есть нюансы, но не стоит их тут рассматривать).
                                                                                          C и С++ компилируются в машинный код.

                                                                                          А вот в результате работы, например, Angular + Typescript + sass + Webpack вы получите набор HTML, JS и CSS файлов. И все это добро уже работает в браузере.

                                                                                          Для приложений которые генерируются на сервере HTML + JS работает отлично.
                                                                                          Да и браузер — отличный механизм доставки приложений и их обновлений.
                                                                                          Сейчас есть необходимость в одностраничных приложениях это раз, плюс есть большой кусок мобильной разработки.

                                                                                          Чего бы мне хотелось в идеале — иметь такуюже платформу как браузер, но заменить там HTML, JS, CSS на то, что отвечает современным потребностсям.

                                                                                          Ну и появление webassembly это как раз движение в этом направлении.
                                                                                            0

                                                                                            JavaScript-движки — либо VM, либо JIT-компиляторы, лиюо что-то посередине.
                                                                                            По сути, то же что и Java-движки. Скажем, апплеты тоже компилируете вы, а запускаются они на стороне пользователя.
                                                                                            P. S. Про WebAssembly: ничего против не имею, джавистам, плюсистам и питонистам станет проще.

                                                                                              0
                                                                                              JavaScript-движки — либо VM, либо JIT-компиляторы, лиюо что-то посередине.
                                                                                              По сути, то же что и Java-движки.

                                                                                              Вы правы.

                                                                                              Я же немного о другом говорил, что большинство современных тулов (typescript, angular, react например) транслируют/компилируют «нечто» в HTML, JS, CSS. А дальше да, все это исполняется на vm/jit.
                                                                                              Но ведь все эти инструменты появились только потому, что HTML, JS, CSS не могут решать задачи современных приложений. Я именно это имел ввиду.
                                                                                                0
                                                                                                Как не могут, если в них компилируется? :) По сути все эти исходники для бабеля/вебпака/… это сахар для HTML, JS, CSS, позволяющий упростить и ускорить работу разработчика, но ничего нового в возможности не привносящий. Более того, у грамотного разработчика «нативный» HTML, JS, CSS скорее всего будет быстрее, красивее, легче и т. д. чем результат компиляции.
                                                                                                  0
                                                                                                  Как не могут, если в них компилируется? :)

                                                                                                  Конечно, я выразился не совсем корректно, конечно могут.

                                                                                                  Когда я говорю, что не могут, я имею ввиду задачу вида:
                                                                                                  Сделать X за Y часов и Z ресурсов.
                                                                                                    0

                                                                                                    Ладно, рассматривайте их как байткод для веба.
                                                                                                    Вы же не будете писать на ассемблере под JVM.

                                                                                  0
                                                                                  Но я не знаю, сколько времени осталось, пока они не вошли в категорию «X — дерьмо!».

                                                                                  Учите мемы web components. Они уж точно не протухнут. А использовать можно уже сейчас, докинув полифиллов
                                                                                    0
                                                                                    Вы гарантируете это?
                                                                                      0
                                                                                      Они ведь будут встроены в браузеры
                                                                                        0

                                                                                        некоторые перемещают в категорию "X — дерьмо!" и браузеры тоже :)

                                                                                    0
                                                                                    «М-да, бяда, ой бяда бяда.» Про собеседования понравилось, есть похожий опыт. :)
                                                                                    Вообще, посмотрите, например на ремонт электроники. С паяльником сидят только энтузиасты. В сервисных службах же, тупо меняют блоки, даже не могут сказать как этот блок в деталях работает. Все усложняется. Да и не хотят разбираться, ибо компания снижает себестоимость.

                                                                                    Программирование такая же область, где энтузиасты изучают алгоритмы и паттерны и пишут фреймворки, а те кто хочет рубануть денег «в легкую» — интегрируют JQuery плагины. Печалька.
                                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                                        0
                                                                                        Тенденция достаточно обща и началась не вчера: https://habrahabr.ru/post/282986/
                                                                                          0
                                                                                          Спасибо, автору. Прям как у нас.
                                                                                            –1
                                                                                            Javascript — гэ. От начала до конца. Это просто хак. Многие библиотечные функции возвращают «значение или null», но с null'ом можно забыть сравнить, отсюда баги. И это вместо нормального std::optional из C++ или Maybe из Haskell. Если пишем var a = {"a": 0}; a.b, то ошибку поймаем только в рантайме. Никакого этапа компиляции тут нет. Да и вообще, это, типа, не ошибка. a.b — это не синтаксическая ошибка, это просто undefined. Да и вообще, огромное количество кода, который в компилируемых языках был бы запрещён, в Javascript разрешён. Это не ошибка, это undefined. Список можно продолжать, ищите сами списки в интернете вида «100 недостатков Javascript». Это просто кошмар для человека, привыкшего к компилируемым языкам, таким как C, C++, Haskell, а также к такому красивому, пускай и заброшенному и малофункциональному языку на сегодня как Pascal.

                                                                                            Сейчас хайп вокруг разных технологий на базе js, но неудивлюсь, если вдруг очень скоро будет признано, что js — гэ, а вместе с ним node и все фреймворки на нём :)
                                                                                              0
                                                                                              По-моему, вы путаете разделение языков на компилируемый/интерпретируемый и на с сильной/слабой типизацией. Ассемблеры — семейство компилируемых языков, но обычно вообще без типизации, даже слабой.

                                                                                              И, кстати, многие функции стандартной библиотеки C возвращают в качестве признака ошибки 0 или -1. Это не считая kernel panic/BSOD.
                                                                                                0

                                                                                                А я не говорил, что единственная проблема javascript в том, что он некомпилируемый. Если взять javascript и, так сказать, в лоб его переделать из интерпретируемого в компилируемый (возможно, добавив попутно типизацию), он всё равно сохранит многие недостатки.


                                                                                                Да и вообще, проблема не в том, что javascript некомпилируемый. Просто я перечислил известные мне компилируемые языки как положительные примеры, как примеры "хороших" языков в отличие от "плохого" javascript. Python тоже, наверное, можно было привести в качестве примера "хорошего", но я не знаю python, поэтому упоминать его не стал.


                                                                                                с сильной/слабой типизацией

                                                                                                У javascript проблемы не только с типизацией. Слышал, что есть некий typescript. Думаю, эти ребята просто взяли javascript и в тупую добавили типизацию, не изменив всего остального. Значит, многие проблемы javascript всё равно остаются.


                                                                                                И, кстати, многие функции стандартной библиотеки C возвращают в качестве признака ошибки 0 или -1

                                                                                                Да, это плохо. Но если говорить про C++, это решаемо. Можно обернуть эти функции в обёртки, которые возвращают std::optional, std::variant и т. д.


                                                                                                Это не считая kernel panic/BSOD.

                                                                                                Как пример хорошего языка приведу Haskell. Наверное, привёл бы тут ещё и Python, если бы знал его. (Сюда же, видимо, Go и Rust.) Haskell с одной стороны не подвержен всевозможным утечкам памяти, сегфолтам и т. д., в отличие от C/C++, но с другой стороны нет вот этого вот бардака в стиле "любая переменная может оказаться null, а ещё undefined", как в javascript

                                                                                                  0
                                                                                                  Все проблемы JS давно известны, тем не менее это единственный язык для клиентского взаимодействия. Так что придется его любить таким какой он есть либо не пользоваться им вовсе. Тем более, что есть удобные тулзы по уменьшению боли aka TypeScript и компания.
                                                                                                    0

                                                                                                    Вполне возможно, что на js вообще программировать перестанут, а будут писать лишь на том же typescript или на чём-то ещё и потом транслировать в js. Ну или браузеры введут новый язык. И программирование на js исчезнет как со стороны клиента, так и сервера. Вместе со всякими node. Я это просто к тому, что сам вот этот js в какой-то момент может быть объявлен отстоем

                                                                                                      0
                                                                                                      1) На сервере и вообще в CLI JS далеко не единственный язык, в том числе не единственный интерпретируемый со слабой типизацией, но его популярность растёт. Плюс используется для разработки мобильных приложений без привязки к браузеру. Это только то, что массово мелькает на разных общеразработчиских ресурсах.

                                                                                                      2) Недостатки JS могут удаляться потихоньку, объявлением части функциональности deprecated с последующим выпиливанием.
                                                                                                0

                                                                                                Даёшь сайт http://jssadness.com (по аналогии с http://phpsadness.com )

                                                                                                0
                                                                                                Правда в том, что большей части разработчиков фиолетово на сам проект. Куда важнее чувствовать себя «в тренде». Не быть лохом.

                                                                                                Таки да.
                                                                                                Но так поступают как раз лохи. :)

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

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

                                                                                                Сингулярность ближе, чем ты думаешь.

                                                                                                Да? :)
                                                                                                Сингулярность — это Windows XP + Opera 12. :^)

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

                                                                                                Самое читаемое