Більшу частину вчорашнього дня втратив на те, щоб виловити баг у своєму коді на фронті — в інтернеті купа обговорень схожих кейсів і всі рішають якимись дуже складними конструкціями. Врешті мені в діскорді відповів один з авторів бібліотеки — виявилося, що в мене екстратупий баг на бекенді.
Сенс в тому, що я скопіював приклад на 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?