Использовал для своих проектов PHP (CI, Kohana, CakePHP, велосипеды) -> Java (JSP) -> Node.js (Flatiron.js) -> Python (bottle.py, SCGI велосипед) -> Ruby (ROR) -> Lua (SCGI велосипед, LUVIT) -> Erlang (Nitrogen, Webmachine, только Mochiweb) -> Node.js (Meteor.js).
На ЛОРе было модно говорить и необходимости / крутости / молодежности статически типизируемых + компилируемых языков в вебе. Решил попробовать Go, хотя к тому моменту погружаться в новые языки / фреймворки уже совсем не хотелось. Тем не менее, gave it a try, применил Revel framework для своего очередного проекта, затем Gorilla toolkit. И таки нашёл свой инструмент.
Очень понятный код (связано ли это с качеством либ или с понятностью синтаксиса, но уже на 10й день неспешного погружения спокойно штудировались 3rd party либы), все батарейки включены (особенно для web, bottle.py и даже больше - часть std библиотеки), говорят результат будет производительный (не доводилось проверять, узкое горлышко - БД).
Как по мне то Go стоит использовать в прикладном программировании примерно там же где и С/С++. Из плюсов получаем: * автоматическое управление памятью * отличные средства для параллелизма
Для веба, в классическом его понимании, Python поинтересней будет. А вот для различных серверов/демонов/прокси/балансировщиков думаю подойдет отлично.
А как там го программисты борятся с отсутствием эксепшнов? Пишут по 3 строчки кода что бы проверить return code очередной функции, или есть workarounds?
В том то и дело, что в го обрабатывать ошибки нужно на каждый чих, на каждый вызов функции нужно писать этот бойлерплейт, а в нормальном языке можно сделать глобальный обработчик ошибок, который поймает эксепшн, сообщит о нем девелоперу, а юзеру покажет ошибку.
Я уж не говорю что в куске кода выше нужно как то еще аварийно завершать функцию, что еще минимум одна строчка, иначе что с неоткрытым файлом делать?
а в нормальном языке можно сделать глобальный обработчик ошибок, который поймает эксепшн, сообщит о нем девелоперу, а юзеру покажет ошибку
А на деле это за частую выглядит так: нужно писать свой велосипед чтобы что-то с этой ошибкой сделать дальше после отлова, писать свой велосипед который отправит куда-нибудь как-нибудь девелоперу иначе тупо запишет в лог файл, а юзеру покажет ошибку так ладно еще если покажет и продолжит без проблем работать, а не расквасит интерфейс пользователя.
Напишите на лоре новость когда out of memory в вашей жабке перестанет вешать всю жабку с нагрузкой 100% всех ядер процессора.
if err != nil { log.Fatal(err) }
Можно написать одну func принимающую этот err.
Сколько строк в «нормальных языках» занимает эксцепшионинг?
ты всё правильно делаешь. Мы-юы так и остались волосатыми безмозглыми обезьянами, если-бы просто жрали бананы. Кто-то должен был взять палку, и сбивать эти бананы этой палкой. Я уверен, что это
1. был самец
2. Этот самец гордо демонстрировал свою палку, которой он сшибает бананы
3. Все самки были его. Самки так устроенны, что детей делают всегда от умных самцов (хотя часто живут с успешными).
4. не очень-то тот самец хорошо питался, ибо палку взял не от хорошей жизни. Видать был омегой, которую альфа-самцы выкинули нафиг из мест, где этих бананов полно. И только в силу п3 мы имеем сегодня цивилизацию потомков этой омеги...
Да, ты прав и одновременно нет. То же самое можно сказать про любой явившийся яп, а равно и про канувшие в Лету. Пример показателен, сентенция — нравоучительна, но в конкретной ситуации не выдерживает никакой критики, т.е. совсем.
тут фишка в том, что есть такая хрень, и называется она «энтропия». По логике вещей и по мироустройству, энтропия растёт (ну или хотя-бы постоянная, если ничего не происходит). Проблема в том, что рост энтропии == смерть и деградация. Тогда как её уменьшение == нелогичность.
Т.е. я-то прав, хотя и не логичен одновременно. Почему этот мир устроен именно так(нелогично) — я не знаю.