Куинси Ларсон

Не очень впечатлен этой статьей. Я объясню почему.

Во-первых, это клише:

Школьный учитель JavaScript советует сначала изучить JavaScript.

Лично у меня больше всего опыта и мне нравится язык программирования C #. Однако вы не увидите, чтобы я делал какие-либо публикации о том, что C # - «лучший язык для изучения в первую очередь». На самом деле, я даже не думаю, что когда-либо называл его «лучшим языком», потому что какой язык лучше - это полностью субъективно и зависит от целей программистов. Если вы публикуете сообщения, которые следуют явной предвзятости, подобной этой, ИМО, пришло время отступить и задуматься.

Тем не менее, если бы вы сказали: «JavaScript - лучший язык программирования для изучения веб-разработки», я мог бы отнестись к вам немного серьезнее, но не намного, потому что даже это очень широкое утверждение.

Но вы сказали «лучший язык программирования для изучения в первую очередь». Итак, если я работаю в лаборатории в исследовательской школе, хочу быть разработчиком видеоигр для Blizzard Entertainment, хочу писать программы для следующего Lunar Lander, желая создавать встроенные системы, нет, забудьте про C, C ++ или Java, забудьте MATLAB, забудьте COBOL, позвольте мне научиться ... JAVASCRIPT!

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

Опрос StackOverflow ... Позвольте мне процитировать очень быстро:

Примерно каждые 8 ​​секунд разработчик задает вопрос о переполнении стека. В этом году на звонок откликнулись 56 033 программиста из 173 стран.

Мы задали им 45 вопросов. Ключевые моменты включают следующее:

Разработчики любят Rust. Даже back-end разработчики знают JavaScript. Только 7% разработчиков называют себя «рок-звездами». Большинство разработчиков предпочитают собак кошкам. (Но не разработчики в Германии.)

Отлично, поэтому они задали 56 000 разработчиков , которые посетили их сайт и были готовы ответить на 45 вопросов. Хотя это очень полезный опрос, он не отражает фактическую статистику, а представляет статистику людей, которые посещают и используют StackOverflow и ответили на опрос. Это не государственная перепись, и даже она может быть неточной. Я видел, как вы снова и снова цитируете этот опрос, как будто это Евангелие, и, честно говоря, более 6 месяцев самообучения, более 12 часов программирования и непрерывного изучения с мая прошлого года, 6–7 в неделю, если таковой есть. Я обнаружил, что этот опрос не так точен, как я думал.

Согласно опросу, в отрасли почти нет женщин, но я обнаружил, что общаюсь с большим количеством женщин, чем даже с мужчинами, во многих группах и форумах, которые я посещаю, в моих структурах данных и уроки перформанса ведут 2 женщин профессора и 1 мужчина, я выиграла хакатон с женщиной, многому научилась у Кейт Грегори, Леа Веру - гроссмейстер, Эстель Вейл - еще один чемпион, Сарон Итбарек оказал влияние на сообщество новичков, Кимберли Волл - эксперт по видеоиграм со степенью доктора философии в области искусственного интеллекта, я тоже кое-что узнал от Ирис Классон, а P1XT ведет ваш форум на FreeCodeCamp, без вопросов об этом. Конечно, возможно, вы не слышали о некоторых из них, поскольку они находятся за пределами «сообщества JavaScript», на котором вы так сосредоточены. Надеюсь, если это так, вы будете искать.

Конечно, JavaScript будет иметь высокий рейтинг. Почему? Потому что это язык, который не нужно изучать многим разработчикам. Почему? Потому что, скажем, я программирую серверную часть или использую C ++, и мне нужно быстро поработать с веб-браузером. Что ж, теперь мне нужно изучить JavaScript. В сегодняшнем мире, в котором больше всего задействован Интернет, это более вероятно, чем необходимость быстрого использования C ++ для интерфейсного разработчика. Подумайте, это искажает цифры Куинси. Я в основном программирую на C #, но если бы я прошел опрос, меня бы тоже назвали разработчиком JavaScript, потому что я бы ответил на JS как на один из языков, которые использую. Кроме того, GitHub также неточен. Я не знаю, сколько проектов я загрузил, где он неправильно помечает мой проект C # как проект JavaScript. Не верите? Пойдите, проверьте несколько репозиториев.

Есть также другие опросы, в которых говорится, что JavaScript не так популярен (но да, он стал популярнее, как вы упомянули выше на одной из своих иллюстраций), опросы, которые говорят, что C # является лучшим и наиболее часто используемым язык, опросы, которые говорят, что Java - лучший и наиболее часто используемый язык, C и т. д. Дело в том, что без обид, но легко просто выбрать тот, который соответствует вашему предубеждению, и распространить его, как евангелие ... Сдержать себя не так просто , прикусите язык и подумайте о примерах использования других студентов и начинающих разработчиков.

Я живу в районе большого города и здесь, хорошо известно, что JavaScript не так популярен, и на самом деле существует так много рабочих мест для .NET и Java, что местный учебный курс по программированию даже принял обучение. СЕТЬ. Я также провожу встречу FreeCodeCamp и довольно долго посещал другую соседнюю встречу, и я слышу, как несколько человек говорят мне, что им отказывают в работе из-за незнания Java и / или C #. Фактически, одного человека наняли на случай непредвиденного обстоятельства, что он изучит C #, прежде чем они позволят ему начать действительно вносить свой вклад в их усилия по кодированию. Это ваши студенты, с которыми я познакомился на встрече FCC и лично узнал и услышал личные рассказы о процессе приема на работу и собеседования.

Еще одна вещь, которую вы сделали в этой статье, что нечестно, - вы провели некую странную воображаемую грань между «ботаниками» и веб-разработкой. Кроме того, вы не говорите о веб-разработке, вы просто говорите «программирование» в целом, что несправедливо. А как насчет тех из нас, кто любит программировать в контексте полномасштабной информатики? Задумывались ли вы о том, почему университеты не часто преподают JavaScript и почему они преподают C, C ++, Java и Python?

Вы задумывались о том, из чего сделан Node.js? Вы задумывались о том, из чего сделан движок Google V8? Задумывались ли вы о том, из какого типа кода состоит каждый датчик в каждом из миллионов и миллионов автомобилей и тракторов? Задумывались ли вы, какой тип кода используется в часах, будильниках, блендерах, холодильниках, телевизорах, очистителях воздуха, список действительно бесконечен… Посмотрите эту статью на TopTal. Кроме того, дядя Боб, автор двух самых известных в мире книг по программированию, автор Agile Manifesto, докладчик, выступавший в Стэнфорде, Массачусетском технологическом институте, Йельском университете, Гарварде и т. Д., Поддерживает этот момент, когда говорит о как средний Джо практически не проживет и 1 секунды без использования программы встроенных систем. По определению, JavaScript не может быть более важным, чем C / C ++ / Java и другие низкоуровневые languages ​​», потому что для того, чтобы даже иметь функцию JavaScript, вы должны быть на платформе, которая запрограммирована на этих языках. Меня не волнует, что говорится в опросе StackOverflow.

Но позвольте мне перейти к моему главному и заключительному пункту. Вы признаете, что не говорите, что JavaScript является «лучшим», но также признаете, что предлагаете его как лучший первый язык для изучения. Я не верю в это. Как вы определяете «легкий» ? » Он может отличаться от других людей, которые не похожи на вас. Например, я считаю, что концептуально проще строго вводить все, а также указывать и понимать концепции целых чисел, uint, байтов, двойников, десятичных знаков, строк, символов и т. Д., А не просто «var» или «число». Моему мозгу в корне сложнее понимать вещи, когда я не знаю, что происходит под капотом, и я не единственный, кто так думает. Видите ли, некоторым из нас действительно нравится сущность информатики вплоть до байтов, битов, операций XOR и NAND, и пропуск всего этого на самом деле делает ее более трудной для понимания. Мне также легче сосредоточиться на классах - назначать действия (методы) и дескрипторы (свойства) классам объектов, чем я делаю «var (здесь какое-то существительное) РАВНО ФУНКЦИИ». Я считаю первое более «естественным».

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

Подробнее об отладке. Да, у нас есть Chrome Debugger (который, кстати, написан на C ++), но это почти шутка: довольно забавно, когда вы запускаете код разработки внутри платформы, которая сама управляется этим кодом разработки. Например, когда я пишу программу на C # и вызываю бесконечный цикл или другую проблему, которая приводит к зависанию программы, мой отладчик IDE по-прежнему полностью контролирует программу, и я могу остановить ее без каких-либо фактических зависаний в среде IDE. С отладчиком Chrome вся вкладка зависает, и мне приходится закрывать процесс, включая сам отладчик.

Это очень неприятно и совсем не удобно для пользователя и не интуитивно. Между сценарием, включающим последовательность в HTML, неработающей отладкой, слабо типизированным дерьмом и ошибками css практически без признаков того, что на самом деле происходит (опять же, в среде IDE с «языком более низкого уровня» я могу видеть ВСЕ из того, что происходит в памяти в любой момент времени), черт возьми, я нашел JavaScript сложнее и еще больше неприятно учиться вначале, и на самом деле я бы сказал, что любой, кто может и действительно изучает JavaScript, как свои пять пальцев после бесчисленных часов борьбы с тем, что я только что сказал, только для того, чтобы все еще не иметь возможности управлять компьютером точно так же, как C, C ++ или сборка, могли бы перенять C, C ++, C # или Java так же легко, если не проще.

И последнее, но не менее важное: все сводится к вариантам использования. Как я сказал ранее, как вы собираетесь сказать начинающему разработчику видеоигр, разработчику ядра или разработчику ОС, что первым языком, который они должны выучить, является JavaScript? Я имею в виду, давай правда? И если ваш аргумент состоит в том, что это не входит в ваши намерения, вам нужно прояснить это. Я устал от этих мантр «Учись кодировать», которые рисуют весь мир программирования так, будто это все веб-разработка, а это не так. Я мог так же легко предположить: «О, давайте просто предположим, что каждый хочет стать следующим программистом Call of Duty» и начать открывать «учебные лагеря C ++ / C # Unity» по всему городу и называть их «школами программирования», но я бы не стал, Я бы по крайней мере назвал их правильно: «Курсы для начинающих по разработке программного обеспечения для видеоигр». Одной кистью всех не нарисовать.

Но этот комикс мне очень понравился, он был классическим.