LINUX.ORG.RU

ЯП похожие на Golang

 , , ,


0

6

Ничего нового не завозили пока? Интересуют:

  • Предельная простота, чтобы легко читалось и писалось;
  • Как и в Go, функции - first class citizens, чтобы не требовалось по каждому чиху классов пихать; перегруженность многоуровнево-вложенными директориями a-la Java в одном проекте тоже не желательна;
  • Статическая типизация: более строгая чем в Go. Generics? В анус interface{}? Аннотации как в Java или хотя бы типобезопасность тегов в структурах;
  • Разрешить горутинам общаться только через каналы;
  • Добавить таки конструкторы вместо паттерна «конструктор»;
  • Возможно, не использовать сборку мусора;
  • Мелкие фиксы: унификация new/make, инициализации новой переменной (var vs. :=) и т.д.
  • Немногословность: «func Do» / «func do» предпочтительней «public function Do» / «private function do», а «{}» лучше «begin ... end».
  • Не хотеть ставить ";" в конце каждой линии, как будто комп и так распарсить не способен;
  • Компилятор: быстрый, программы - нежручие;
  • Если это что-то совсем новое, можно вместо поддержки тысячи платформ - WebAssembly, который через 4 месяца в браузерах выйдет из под флага, а далее проследует и на мобильные платформы.

Есть что-то такое, что подпадает под критерии? Возможно, немейнстримовое и непопулярное - не важно (хотя труп насиловать в полном одиночестве не хотелось бы).



Последнее исправление: cetjs2 (всего исправлений: 1)

Под часть критериев попадает Haskell. Но не под «Компилятор: быстрый, программы - нежручие» уж точно.

Deleted
()
Ответ на: комментарий от Bad_ptr

А еще нормальную обработку ошибок и т.д
Да хотя бы описанные ОПом требования.
Но нет, не будет, процесс уже запущен.

ritsufag ★★★★★
()
Ответ на: комментарий от ritsufag

нормальную обработку ошибок

Обрабатывает ошибки программист. А для сигнализации/реакции на ошибки там и так есть panic/recover и возврат нескольких значений из функции.
И если были бы женерики можно было бы Maybe возвращать.

Bad_ptr ★★★★★
()
Ответ на: комментарий от Deleted

Он в первую очередь не подходит по «Предельная простота, чтобы легко читалось и писалось» =).

Deleted
()
Ответ на: комментарий от Bad_ptr

Обрабатывает ошибки программист.

И код пишет программист. Что ты несешь вообще?
Вместо человеческих исключений сделали проброс ошибок, хуже говна я не едал.

ritsufag ★★★★★
()
Ответ на: комментарий от ritsufag

Вместо человеческих исключений сделали проброс ошибок, хуже говна я не едал.

Что такое, никогда не писал на Си?

tailgunner ★★★★★
()
Ответ на: комментарий от Deleted

Эм, не настолько Haskell и сложный. Он как Go, только с функциональным вместо императивного программирования. Чем больше пишешь, тем больше в этом убеждаешься.

Deleted
()
Последнее исправление: merhalak (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Нет, только читал. До сиз пор рвота от либ с goto, написанными видимо какими то бородатыми садомазохистами.

ritsufag ★★★★★
()
Ответ на: комментарий от ritsufag

До сиз пор рвота от либ с goto

Предложи более удобный способ аварийного выхода с освобождением ресурсов без goto, в отсутствии RAII :) Даже в Java до появления try-with-resources приходилось руками ресурсы освобождать.

Как это в Go делается, кстати?

mersinvald ★★★★★
()
Последнее исправление: mersinvald (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ну и в сишке так. Я про то что если там много освобождать, то приходиться копипастить до черту кода и править его везде.

По этому в сишке юзают такой прием, на что, видимо, и баттхертил ritsufag:

FILE* log_file = fopen(...);
if(!log_file)
    goto end;

FILE* out_file = fopen(...);
if(!out_file)
    goto close_log_file;

FILE* in_file = fopen(...);
if(!in_file)
    goto close_out_file;

// Logic code

fclose(in_file);

close_out_file:
fclose(out_file);

close_log_file:
fcose(log_file);

end:
return errno;

mersinvald ★★★★★
()
Последнее исправление: mersinvald (всего исправлений: 1)
Ответ на: комментарий от Esper

Вот это более разумно. Хотя и костыль, в общем случае. RAII для функции)

mersinvald ★★★★★
()
Ответ на: комментарий от mersinvald

Вероятно никак, кроме как освобождать на месте, но жопа горит не с этого, а то что там просто здоровенный кусок функции. Т.е сама функция итак монструозная, а в добавок приходится скакать по goto как гулящая женщина.

ritsufag ★★★★★
()
Ответ на: комментарий от ritsufag

приходится скакать по goto как гулящая женщина

Все goto вперед, на группу меток в конце функции. Ничего сложного.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Ну ето не ко мне. Я ж не погроммист.
А на сях не пишу и вроде б не собираюсь, а вот порой посмотреть реализацию надо.

ritsufag ★★★★★
()
Ответ на: комментарий от ritsufag

Я не погроммист.
на сях не пишу и не собираюсь

Зачем тогда выступать с резкой критикой того, чего даже не понимаешь?

mersinvald ★★★★★
()
Ответ на: комментарий от ritsufag

А я вот так пишу:

FILE *log_file = NULL;
FILE *out_file = NULL;
FILE *in_file = NULL;
int ret = -1;

if(!(log_file = fopen(...)))
    goto cleanup;

if(!(out_file = fopen(...)))
    goto cleanup;

if(!(in_file = fopen(...)))
    goto cleanup;

// Logic code

ret = 0;

cleanup:

if(in_file)
    fclose(in_file);
if(out_file)
    fclose(out_file);
if(log_file)
    fcose(log_file);

return ret;

anonymous
()
Ответ на: комментарий от ritsufag

Читать тебе никто не мешает, но ты же начал критиковать, при этом не предлагая никакого альтернативного решения, которое было бы лучше.
Переходы здесь значительно читабельнее, чем освобождение ресурсов прямо в проверках потому что отделяет логику программы от управления ресурсами.

mersinvald ★★★★★
()
Последнее исправление: mersinvald (всего исправлений: 1)
Ответ на: комментарий от mersinvald

при этом не предлагая никакого альтернативного решения

Ага, за 45 лет никто не придумал и тут я на белом коне.
Просто воткнули костыль и видимо большинство это устроило.

ritsufag ★★★★★
()
Ответ на: комментарий от ritsufag

Может стоит как раз задуматься о том, что ты НЕ на белом коне и твоя критика не объктивна и не имеет под собой никаких оснований?

mersinvald ★★★★★
()

Не считая простоты - Haskell.

qnikst ★★★★★
()
Ответ на: комментарий от mersinvald

Что значит не объективна? Я по-моему довольно-таки ясно сказал что беспорядочное использование goto превращает функцию в трудночитаемую лапшу.
КР в своей берестяной грамоте об этом предупреждали, но видимо большинство это проигнорировало ^)

ritsufag ★★★★★
()
Ответ на: комментарий от ritsufag

беспорядочное использование goto превращает функцию в трудночитаемую лапшу.

Трудночитаемая для кого? Насчет трудночитаемости и мнимой беспорядочнчости для программистов, тебе уже ответили: ЯП похожие на Golang (комментарий)
Для секретарши Леночки любой код, обычно, трудночитаем.

mersinvald ★★★★★
()
Последнее исправление: mersinvald (всего исправлений: 2)
Ответ на: комментарий от mersinvald

Так то ж был совет для погроммистов, вот пусть их и поучает, а я уже имею дело с продуктами их жизнедеятельности.

Для секретарши Леночки любой код, обычно, трудночитаем.

Леночка не занимается ерундой, да и вообще байтоебство это не ее)

ritsufag ★★★★★
()

php же! Такое же г*вно!!!

anonymous
()
Ответ на: комментарий от Esper

Да, ты прав. Не пишу на Golang'е, только читаю, так что забыл про defer вообще. Не специалист. :D

Deleted
()
Ответ на: комментарий от mersinvald

Дело в том что большинство их нормально написать не может/не хочет.
А вообще

кокок погроммист илита

Чет в голос с манямирка.

ritsufag ★★★★★
()
Ответ на: комментарий от mersinvald

При чем тут илитарность?

Притом

мам я погроммист не учи меня писать программы, ну мяяяяяям!
как правильно писать маршруты

Это так десктопные макаки видят вебню? Мм.

ritsufag ★★★★★
()
Ответ на: комментарий от ritsufag

Я по-моему довольно-таки ясно сказал что беспорядочное использование goto превращает функцию в трудночитаемую лапшу.

Это порядочное использование, и лапши там нет.

Esper
()
Ответ на: комментарий от ritsufag

Так то ж был совет для погроммистов

То был совет для тех, кто читает код. Но, видно, не в коня корм.

tailgunner ★★★★★
()

Такого языка нет, и в ближайшее время не предвидится.

RazrFalcon ★★★★★
()

В жаваскрипте семиколоны необязательны. Именно из-за этого их надо ставить, твою мать, везде! Вообще, по описанию во многих пунктах похоже на раст.

nikolnik ★★★
()

ЯП похожие на Golang

BASIC уже советовали?

shty ★★★★★
()

WebAssembly, который через 4 месяца в браузерах выйдет из под флага

Откуда дровишки?

foror ★★★★★
()

а «{}» лучше

Зачем этот архаизм? Особенно сам же пишешь:

Не хотеть ставить ";" в конце каждой линии, как будто комп и так распарсить не способен;

foror ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.