LINUX.ORG.RU
ФорумTalks

Интервью с Дугласом Крокфордом - создателем JSON

 


3

2

Дуглас Крокфорд - американский программист, занимающийся разработкой с 80х годов, работал в компании Atari, на студии Lucasfilm, был основателем нескольких стартапов.

Известен созданием формата обмена данными JSON, разработкой линтера JSLint, минификатора JSMin, разработкой типа для представления десятичных чисел с плавающей точкой DEC64. Является участником комитета по стандартизации TC39, принимал активное участие в разработке спецификации ECMAScript 2015 (ES6). Автор нескольких книг по JavaScript.

Интервью на русском языке выложено на youtube-канале https://www.youtube.com/watch?v=WSqCpWYfTFU

Основные тезисы:
  • Программистом стоит быть только если вы любите программировать
  • Дуглас начинал свою карьеру в качестве разработчика видео-игр, но сам в игры не играет
  • JSON хорош тем, что он всегда останется таким, какой он есть. Но если бы Дуглас разрабатывал его сейчас, то он бы его еще больше упростил
  • TypeScript не нужен
  • Статическая и сильная типизация не нужна. Динамическая и свободная система типов дает больше выразительности, возможностей и экономит время
  • Дуглас не доволен множеством нововведений в JS и он пользуется только подмножеством языка, как всегда и декларировал. Ему не нравится реализация Promise и он считает сахар async/await лишним.
  • 20-ти летние сеньоры были всегда, даже во времена его молодости. Это не веяние моды
  • Он ничего не знает и никогда не слышал о таких компаниях как Тинькофф, Сбербанк, Авито и Яндекс
  • Тесты на знания алгоритмов при приеме на работу бесполезны. Программистов надо отбирать по примерам их кода.
  • Чтобы стать крутым нужно постоянно учиться


Последнее исправление: javascript (всего исправлений: 3)
Ответ на: комментарий от neversleep

> TypeScript не нужен
Как же приятно это слышать.

Странно, транспилер относительно нормального языка здорового человека, а не курильщика с гигабайтами рамы и терабайтами SSD (это я про бабель)

Shadow ★★★★★
()
Ответ на: комментарий от Shadow

в питоне давным давно именно так выглядел dict

Эх, Гвидо, Гвидо. Патентовать надо было!

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

А почему не в «красивом, человекочитаемом» XML? Формат обмена данных не обязан быть удобным форматом хранения данных. Это несколько разные задачи.

Tigger ★★★★★
()

Json лучше xml

Сабж

bender ★★★★★
()
Ответ на: комментарий от Vit

Он победил, потому что мало кто видел тогда дальше собственного носа, и звезды удачно сошлись.

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

Тоже очень удобная позиция, забывать о том, что любой успех это 80% труда и лишь 20% везения, и уповать на все возможные - у них богатый папа, у них мама в IBM, они просто были первыми, они то. они сё.

Ты вот подгоняешь утверждение, что если жысон выплыл, то он идеален

Я этого вообще не говорил нигде. Все о чем я спорю - это то, что никакой потребности в JSON с комментариями нет, потому что именно этим JSON с комментариями никто не пользуется.

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

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

Да, я говорю о том, что если что-то выстреливает, то оно закрывает имеющуюсь потребность и решает имеющуюся проблему, при этом лучше конкурентов если таковые есть (не важно в каком ключе именно лучше, но лучше). Если что-то не выстреливает, значит оно либо не закрывало потребность и не решало проблемы, либо этой проблемы и потребности нет вообще, как в JSON с комментариями. Ты же не привел противоположных примеров, чтобы доказать наличие ошибки выжившего.

javascript
() автор топика
Последнее исправление: javascript (всего исправлений: 1)
Ответ на: комментарий от Tigger

почему не в «красивом, человекочитаемом» XML?

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

Формат обмена данных не обязан быть удобным форматом хранения данных. Это несколько разные задачи

Удобнее иметь один формат, чем два.

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

еще никого не судили, за преступления против человечества.

Я не устаю рассказывать про протокол обмена данными в европейском стандарте заряда электромобилей постоянным током (у японцев - просто старый добрый CAN по двум проводам):


  • Управляющие контакты - два провода
  • На физическом уровне соединяются по протоколу PLC, но на каком-то минимальном напряжении
  • Поверх PLC поднимается TCP/IP
  • И в зарядной станции, и в авто поднимается http сервер
  • Обмен данными идёт по SOAP (XML внутри zip через http)



Я щитаю, это эпичное превосходство над CAN.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 3)
Ответ на: комментарий от javascript

И именно уродство XML заставило его разработать JSON.

Сорта как по мне. JSON читаем пока там минимальная вложенность и десяток ключей. Если взять какую-то типичную простыню то с ней так же очень сложно работать "руками". Ну и xml по-разному можно использовать, какой-нибудь WSDL здоровенный где все объекты внутри документа десять раз друг на друга ссылаются конечно не получится просто так "осознать", а так - ну да, закрывающие теги чуть напрягают когда они на одной строке, но в целом как по мне это разметка как разметка. (и мне кажется вручную с xml и json мало кто работает, а используют именно для хранения и передачи данных, которые "парсятся" из\в структуры данных в ЯП, так что не все ли равно что там внутри)

micronekodesu ★★★
()
Ответ на: комментарий от system-root

Он ничего не знает и никогда не слышал о таких компаниях как Тинькофф, Сбербанк, Авито и Яндекс

Типичный америкос.

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

praseodim ★★★★★
()
Ответ на: комментарий от Tigger

А смысл в комментариях при обмене данными? Кто их читать будет?

JSON далеко не всегда обмен данными. Это часто ещё и конфиги. И вот там – комментарии нужны.

EXL ★★★★★
()
Ответ на: комментарий от system-root

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

praseodim ★★★★★
()
Ответ на: комментарий от LikeABoss

У толпы не получается высрать столько же, сколько высирал Эдди?

Да, Эдди написал комментов больше всех регистрантов лора, причем с значительным отрывом от номера 2. Как ему это удалось ума не приложу, наверное строчил на работе месяцами.

goingUp ★★★★★
()

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

goingUp ★★★★★
()
Ответ на: комментарий от Anoxemian

Этот чувак не разрабатывал никаких протоколов.

javascript
() автор топика
Ответ на: комментарий от peregrine

Не нужно использовать JSON для ручных конфигов

Удваиваю!

Psilocybe ★★★★
()
Ответ на: комментарий от javascript

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

Тоже очень удобная позиция, забывать о том, что любой успех это 80% труда и лишь 20% везения, и уповать на все возможные - у них богатый папа, у них мама в IBM, они просто были первыми, они то. они сё.

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

Все о чем я спорю - это то, что никакой потребности в JSON с комментариями нет, потому что именно этим JSON с комментариями никто не пользуется.

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

Да, я говорю о том, что если что-то выстреливает, то оно закрывает имеющуюсь потребность и решает имеющуюся проблему, при этом лучше конкурентов если таковые есть (не важно в каком ключе именно лучше, но лучше).

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

Если что-то не выстреливает, значит оно либо не закрывало потребность и не решало проблемы, либо этой проблемы и потребности нет вообще, как в JSON с комментариями.

Допустим есть конкурс. Три хороших финалиста, примерно похожих. Но победить может только один. Если один победил, это не значит, что два остальных плохие.

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

Vit ★★★★★
()
Ответ на: комментарий от Shadow

Причем здесь babel и tsc и как оно в конечном итоге транслитируется? Я считаю, что сам TypeSсript не нужен (хотя файлы деклараций удобны - посмотреть, что там по типам). И на JS можно писать код «здорового человека», поставь линтер, в конце концов.

Под новые версии Node.js Babel генерирует вполне компактный код.

neversleep ★★
()
Последнее исправление: neversleep (всего исправлений: 1)
Ответ на: комментарий от neversleep

сам TypeSсript не нужен (хотя файлы деклараций удобны - посмотреть, что там по типам

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

Nervous ★★★★★
()
Ответ на: комментарий от token_polyak

человекочитаемый XML

Хахахахахахаха!

Miguel ★★★★★
()
Ответ на: комментарий от Shadow

Угу. Настолько нормального, насколько можно было сделать, не потеряв совместимость с жабоскрипт-макаками.

Miguel ★★★★★
()
Ответ на: комментарий от Shadow

Обмен данными идёт по SOAP

А вот и ответ, почему за XML никого не судили. Потому что все силы брошены на подготовку суда за SOAP. Это ещё более жуткая штука.

Miguel ★★★★★
()
Ответ на: комментарий от Nervous

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

Если упарываться типизацией, для этого есть Java, C#.

neversleep ★★
()
Ответ на: комментарий от Vit

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

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

ergo ★★★
()

Вот из-за таких как он у нас сейчас всратые технологии, особенно в вебе.

cocucka ★★★★☆
()
Ответ на: комментарий от javascript

Я этого вообще не говорил нигде. Все о чем я спорю - это то, что никакой потребности в JSON с комментариями нет, потому что именно этим JSON с комментариями никто не пользуется.

самый главный посыл JSON - он человекочитаем. выходит, его придумали для людей. почему наряду с данным JSON мне не дают добавить пояснение для человека, который будет читать этот JSON?

или «машинам» не нужны комментарии? тогда зачем он сделан человекочитаемым? не находишь коллизии?

PS: лично мое мнение - ИТ отрасль повернула сильно не туда, взяв HTTP c JSON для М2М. мне всегда приводят аргумент в противовес - «его легко дебажить, можно читать все что гуляет между отправителем и получателем». на что всегда задаю встречный вопрос - а не является ли ущербность в применении М2М именно причиной потребности такого дебага? и вдовесок даю еще для размышлений пример - почему тот же ерланг дает сетевую прозрачность и обмен сообщениями и никогда и ни у кого не возникает потребности дебажить транспорт?

и да, «популярный» =/= «лучший». как по мне, YAML удобней, если нет глубоких вложенностей. с болью смотрю на конфиги в JSON формате.

ergo ★★★
()
Последнее исправление: ergo (всего исправлений: 1)

Всё верно ответил.

d_a ★★★★★
()

TypeScript не нужен Статическая и сильная типизация не нужна.

Если не знать кто это сказал, то можно подумать, что это слова очередного говнокодера. После TS ощущения от JS немного неприятные. TS показывает очень много в процессе разработки и экономт кучу времени. Никто же не заставляет прям жёстко упариваться типами, прописывая интерфейсы ко всему. Он элементрано подсветит тебе, что ты юзает метод для строки, хотя у тебя число – это банальщина, но как я и писал – экономит время.

CryNet ★★★★★
()
Ответ на: комментарий от CryNet

Никто же не заставляет прям жёстко упариваться типами

Полумеры. Если у тебя в проекте через раз any, а то и @ts-ignore (видел я и такое), то тебе типы не нужны.

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

Если ты не в блокноте программируешь, то при написании кода IDE тебе подскажет, какой тип нужен. А в рантайме тебя уже ничто не спасёт. В общем, насчёт времени - это даже наоборот.

neversleep ★★
()
Последнее исправление: neversleep (всего исправлений: 1)
Ответ на: комментарий от neversleep

Причем здесь

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

Соответственно, нужен tsc, babel или коложура какая-нибудь.
Кложура - для любителей, а бабель сам монстр.

Shadow ★★★★★
()
Ответ на: комментарий от ergo

YAML удобней

Сидеть считать пробелы на третьем экране конфига, да. Всю жизнь мечтал.

Идея для стартапа — специальные линеечки для подсчета пробелов, для продвинутых ямл-девелоперов.

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от CryNet

Никто же не заставляет прям жёстко упариваться типами

Что мне и нравится в тупоскрипте. Хочешь типов — будут тебе типы, не хочешь — не будут.

Nervous ★★★★★
()

Но если бы Дуглас разрабатывал его сейчас, то он бы его еще больше упростил

Чтобы заново изобрести s-exp’ы?

ados ★★★★★
()
Ответ на: комментарий от Nervous

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

ergo ★★★
()
Последнее исправление: ergo (всего исправлений: 1)
Ответ на: комментарий от ergo

визуально легче читать вложенность отступами, чем скобочками

Это пока вся хурма помещается на одном экране. По скобочкам хотя бы навигацию можно организовать, как в нормальных редакторах давным-давно сделано.

Nervous ★★★★★
()
Ответ на: комментарий от token_polyak

Папилломавирус тоже весьма успешен. Но стоит ли поощрять его?

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

theNamelessOne ★★★★★
()

«был основателем» - как можно понимать выражение? Как бы основатель он и есть основатель, он бывшим никак стать не может.

xmikex ★★★★
()
Ответ на: комментарий от LikeABoss

так дело не в количестве, а в качестве.
Эдди метал прицельно, а толпа - наугад и мешая друг другу.

Minona ★★☆
()
Ответ на: комментарий от byko3y

Challenge accepted. Просмотрю лекцию, погуглю, выдам авторитетное мнение

О господи, я бы отсосал Крокфорду, но я боюсь, что его огромный член не влезет в мой рот. Сравните риторику какого-нибудь Гвидо «мой язык замечателен, давайте сделаем его лучше» со словами Крокфорда «JSON немного лучше (чем XML)» (14:50). При том, что даже на LOR отдельные личности переходят на «лучше JSON-а ничего не придумали» — хотя сам Крокфорд с этим не согласен. Просто, у Гвидо нет такого большого члена, чтобы смело сказать «мой питон — говно, и сделать с этим ничего нельзя». Большой питон — маленький член. Причем, дальше Крокфорд признает, что «нам повезло. Обычно любое говно будут тащить десятилетиями просто потому, что к нему все привыкли».

Я просто растекся по креслу от истории про «считалось, что AJAX — это что-то новое, хотя на самом деле это очень старая идея». А я знал, я знал.

«Хорошая часть заключается в том, что это функциональный язык с динамическими объектами» — я вот не пойму, если сам Крокфорд говорит этом, то откуда берется столько упоротых людей, которые считают, что JS — это объектно-ориентированный ЯП?

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

По поводу промисов и async/await свое экспортное заключение выдать не могу, но мое первое впечатление от промисов в JS было негативным. Потом туда внесли еще и async/await, как бы подтвердив. что промисы чот получились плохие. Parseq от Крокфорда посмотрел, но пока что не понял, насколько оно круто и можно ли его сделать круче. Хотя тема мне интересна, сам что-то подобное разрабатываю, планирую еще язык E от Крокфорда заценить — там, вроде бы, должен быть какой-то суперкрутой параллелизм.

Ну и

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

Да, но для меня это очевидно. Тем не менее, на последнем собесе моей «ультимативной проверкой» был именно тест на знания алгоритмов. Ну это как отбирать в команду футболистов по навыку набивания мяча на ноге или повара в ресторан по нарезанию морковки.

Забавно, что Крокфорд — фанат Дейкстры и истории, как и я. Также забавно, что эти знания и умения разрабатывать новые архитектурные штуки с коммерческой сточки зрения являются абсолютно бесполезной хренью — как вы можете наблюдать по опыту 100% провалов стартапов Крокфорда.

Напоследок:

Чтобы стать крутым нужно постоянно учиться

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

byko3y ★★★★
()
Ответ на: комментарий от neversleep

Полумеры. Если у тебя в проекте через раз any, а то и @ts-ignore (видел я и такое), то тебе типы не нужны.

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

Если ты не в блокноте программируешь, то при написании кода IDE тебе подскажет, какой тип нужен

Разве тот же webStorm проверяет типы? Вроде нет.

CryNet ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.