169 похожих чатов

У меня есть задача написать программу, которая обращается к API

и достаёт какие-то данные, хранит их в БД. Также надо прикрутить веб-интерфейс, у которого несколько функций:
1. Визуализация полученных данных;
2. Отдача распоряжений обращаться к API и получать какие-то данные.

В случае возникновения ошибок (с API или с моей программой) оповещать по почте.

Я подбираю язык программирования. В моём wish list был Rust и Haskell. Я чуть больше, чем новичок в обоих этих языках (проблема в том, что часто "переключаюсь" между ними), поэтому хотел бы узнать, правильно ли я выбираю ЯП для того, чтобы решить задачу.
Тут не требуется высокая производительность (лишь из-за того, что API сильно ограничивает в количестве запросов, которые можно выполнить за определённый период), но нужна асинхронность. Важный пункт -- надёжность: программа не должна падать, даже если будут проблемы с доступностью API, также сама программа должна содержать минимум багов, чтобы их потом не приходилось отлавливать.
Так вот Haskell для этого отличный кандидат, мне нравится этот язык, он изящен.
Все требования соблюдены: асинхронность, высокая надёжность, есть библиотеки, позволяющие совершать запросы в сеть, отправлять письма по почте, делать веб-приложения...
И на Rust то же самое, однако, чтобы там написать подобную программу, придётся затратить больше сил (из-за ручного управления памятью), но зато программа будет потреблять меньше памяти (спорно, но это исходит из того, что нет GC) и будет без GC.
Так вот вопросы: верны ли мои рассуждения и занимаюсь ли я premature optimization? Ну и как мне перестать выбирать язык (вернее, перестать переключаться между ними: начинать писать код, через время бросать, брать другой язык), наконец-то начать решать задачу и изучать Haskell?

13 ответов

12 просмотров

Мое мнение: premature optimization.

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

Cheese Syrowiecki
я вот прямо сейчас подобную задачу на Хаскеле реша...

Кстати плюс, лучший язык - язык который ты знаешь лучше остальных

На хаскелле есть мощное подспорье в виде servant, который позволяет описать API в виде типа и импортировать его в сервер (и клиент, если зачем-то понадобился, он вообще на стороне servant-а полностью делается одним вызовом client).

Savvy-Bonker Автор вопроса
Cheese Syrowiecki
я вот прямо сейчас подобную задачу на Хаскеле реша...

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

Servant (хаскелльная либа для бэкенда) очень прикольный - выражает REST API через систему типов (плюс бесплатно даёт многопотоки), а вызов чужого апи возвращает тип-сумму, так что борьбы с исключениями и падениями почти не будеь. SQL тоже в Хаскелле довольно удобный, есть hasql-th с проверкой синтаксиса и типов запросов postgres на этапе компиляции, например. Раст я не пробовал, но про Хаскелль точно можно сказать что подходит, и даёт интересный опыт.

В rust нет нормальной поддержки для higher kinded data, а в вебе полно задач, которые ложатся на переиспользование hkd. Я бы только из-за этого предпочел хаскель расту

Savvy Bonker
Язык, в котором я лучше всего разбираюсь, — Python...

Только тесты могут помочь, на большом проекте (а язык, особо ни от чего не спасет :)

Arty 🇺🇸
screenshot )))

Если юнит-тесты многословны, тогда это признак того, что где-то у нас протекли абстракции

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта