solovyov.net

Більшу частину вчорашнього дня втратив на те, щоб виловити баг у своєму коді на фронті — в інтернеті купа обговорень схожих кейсів і всі рішають якимись дуже складними конструкціями. Врешті мені в діскорді відповів один з авторів бібліотеки — виявилося, що в мене екстратупий баг на бекенді.

Сенс в тому, що я скопіював приклад на Sqlite, який робив щось типу let row = db.get(q), і переробив на постгрес, отримавши let row = db.query(q). Чуєте, звідки вітер дує? db.query повертає не row, а якийсь результат, де треба брати result.rows[0]. Ну авжеж JS не пікнув, а TS я там не сетапив, бо і ліньки, і не хочеться, і шо я, ніколи жсу не писав, чи шо? 😁

Які з цього можна зробити висновки, окрім того, що фронт не завжди винен? 🤣

1️⃣ Проблема дуже схожа на те, що було б, якби нагенерити багато коду за допомогою GPT — я скопіював відносно багато (близько 100 рядків) коду з прикладів на беці та на фронті, і тупив в них. Коли GPT десь набреше як я, то трабла буде така. І здається, що в цьому місці типізація дуже не завадила б, правда? Динамічно типізовані мови зробили для того, щоб люди могли швидше писати — а нащо це нам, коли код пише кремнієве створіння?

2️⃣ При таких розкладах здається, що було б кльово мати нову мову, яка орієнтована максимально на простоту читання і дебаг (інтроспецію і все таке). Які претензії до хороших чи модних зараз мов зі статичною типізацією?

Zig — орієнтована на простоту написання людиною, здається що за мемліками у великій кількості кода стежити очима не дуже зручно.

Rust — borrow-checker достатньо складний для того, щоб коли ти тільки читаєш код, забагато розумової енергії на нього треба буде, і нюанси будуть вислизати. А ще я наблюдав якось на стрімі, як професійний програміст на Расті (у сенсі що він на роботі на ньому пише) запинує borrow-checker експериментами, а не роздумами.

Haskell — мене тут лінивість напрягає сильно, не зважаючи вже на те, що це ще більший екстрим зі складнощами абстрацій, ніж в Rust'a.

Ocaml може? Хз навіть, придумайте до чого приколупатися?

Авжеж отак здалеку хочеться і лаконічності (щоб не треба було продиратися через FactoryBuilder factoryBuilder = new FactoryBuilder()), і хорошої типізації, і, може, відсутності GC? Чи це я вже гоню?

Короч, запускайте фантазію, якою вам ввижається ідеальна lingua franca для перетину люди/LLM/CPU?

(@ tg)