Продолжение размышлений про инструменты и их сложность
Сегодня дебажили сервис с коллегой. В процессе с нас семь потов сошло, и тут я вспомнил кое-что: можно часто услышать, что Go называют простым языком. Это правда и неправда одновременно. К сожалению, в русском языке нет отдельных слов, которые обозначают easy и simple. Т.е. простой с точки зрения понимания/использования/взаимодействия и простой с точки зрения дизайна.
Чтобы лучше понять разницу, подумайте: машинный код — простой? Ну вроде бы да. А писать на нём просто? Кажется, нет.
Да, у Go одна из самых лаконичных грамматик среди языков. Да, у нас тут минимум фич (макросы, вас очень не хватает), зато очень явный (хоть и не всегда ясный) код. Но будет ошибкой сказать, что писать на Go однозначно просто. Разрабатывать типовые веб-приложения, которые делают только CRUD будет просто на любом языке. При этом делать это на Python или NodeJS будет проще и быстрее, чем на Go, потому что для этих языков уже есть все необходимые кирпичики для большинства типовых задач. А вот написать приложение, в котором происходит асинхронный ад, но при этом ад можно контролировать — это задачка для Go. Но! Код такого приложения не перестаёт быть сложным только потому что асинхронные кишки вытащили наружу и сделали явными.
Для языков в частности и для инструментов в общем можно определить две характеристики: порог F и потолок C. Из них можно построить составную характеристику — высоту H = C - F. У C++ очень высокий порог, но и потолок тоже очень высокий. Т.е. у него H будет большим, но начать писать что-то осмысленное довольно тяжело. Если мы возьмём Java, то, наверное, её H будет примерно таким же, но с меньшим F, ну и как следствие меньшим C (т.е. легче вкатиться, но возможностей чуть поменьше). У скриптовых языков F ещё меньше, как и H, т.к. меньше окно возможностей.
А вот у Go H по моему опыту один из самых высоких. Потому что на нём очень легко начать писать, и на простых задачах не будет никаких проблем. Но если появляется необходимость написать что-то большое и сложное, Go не вставляет палки в колёса. Вы будете всё ещё писать на простом и понятном языке, но из-за сложности алгоритма и/или предметной области, легко всё равно не будет.
Так что когда вам кто-то скажет, что писать на Go просто, рассмейтесь ему в лицо и скиньте ссылку на мой канал.
Post #65
461
defer panic 🎃 Конфеты или жизнь? IDE или Vim? 📹 https://youtu.be/a_r4pxBuK_4 Решил записать на Хэллоуин экспериментальный видос, где я импровизирую на камеру, рассуждая о том, зачем нужно хотя бы попробовать Vim, а также о том, как изучать инструменты с меньшей болью.…
- ❤ 6
- 👌 3
- 🔥 2
- 😁 1