почему
Нет
очень плохой дизайн - нет сумм-типов, обработки исключений, наследования, нет простого подхода для итерирования по полям структуры, нет перегрузки функций/методов, нельзя задавать стандартные значения аргументов функции, нельзя определять генерические методы, нет параметрического полиморфизма, нет передачи значения по ссылке и проч. Из достоинств только простота кросс-компиляции и хорошие возможности для concurrency
жесть, а еще goto обрезанный
вот это прям вообще калит!
Смотря что хотите писать. Первым языком лучше всего выбрать тот на котором то что вы хотите сделать получится быстрее и проще всего.
исключения подаются критике во многих языках наследвоание подается критике стандартные значения аргументов ведут к неявному поведению и плохому дизайну параметрич полифморфзим уже есть (что тоже подается критике) плюс в хорошей
учите тот с которым может помочь кто то из окружения и есть вакансии в ващем городе
Яб си шарп посоветовал
Не, гошечка прям идеально для первого
без работная она
тогда я буду каждый раз менять язык и ничего не выучу
На itbeard, вроде было интервью с челом, который 14 языков знает😄
с опытом много проще учить новые языки
Первый язык должен быть С. Не ++, просто С. Познаете С - познаете все остальные
станьте кудесником препроцессора
Боятся С - крудошлепером не стать. (С) джейсон стетхем
с си я прострелю колени и мне будет уже все равно
😐 а где есть простой подход для итерирования по полям структуры? Нахрена вообще по структуре итерироваться...
в языках , где "структуры" суть словарь )
для первого рабочего языка - jvm*, javascript, python если вообще нет опыта программирования - python (много книжек, курсов, учебников по теории)
Можно же накодогенирить итератор, возвращающий пустой интерфейс как значение и в гошке если сильно захотеть. Другое дело что есть языки где это делается в компайл тайме а не сбоку
значит все таки лучше джаву?
Учите питон первым, потом так кайфанете от перехода на язык со строгой типизацией.)
Скажите, что вы писать собираетесь? Что-то выделили себе?
Учить питон первым, чтобы потом писать питонокод на типизированных языках? 😁
Т.е. пока не определились. Скорость питона легко компенсируется усилением железа.
все равно не понимаю зачем учить лишний язык, чтобы в любом случае уйти на другой
для работы - да, наверное джаву. как учебный (алгоритмы, структуры данных) - питон если с математикой на "ты" - питон и дальше в большин данные/ai
Язык освоить не будет проблемой, а учить ооп, алгоритмы и тд на питоне удобно ведь много примеров на нему и ты сосредотачиваешся не на коде а на самой проблеме, которую нужно решить
Как раз таки на питоне не удобно и выглядит отвратительно
Почему? Читаешь как английский
Python code Dirty, awful, shit
я вот с какой стороны зайду - а у какого языка, на ваш взгляд, дизайн хороший? и, следующим ходом, по каким критериям гошный плохой, а тот - хороший?
А почему вы в сторону плохого дизайна относите отсутствие поддержки плохих практик? Вы бы ещё про множественное наследование написали, ну серьёзно
Возможность разыменовать нулевой указатель/ссылку в сейвовом подмножестве языка = плохой дизайн
именно поэтому, Го - прекрасный первый, да и последний язык:)
Кстати про выбор его первым языком, вам не кажется что кривая обучения в начале изучения конкурентности в го устремляется к небу? Это плохо
о! а вот скажите, если в коде написано разыменование, а указатель оказался нулевой - что надо делать в языке с хорошим дизайном?
это типа две конструкции, которые надо выучить - это устремление к небу?
Разрешить его разыменовывать в ансейф блоке, перекладывая ответственность явно на вызывающего
Давайте я дам вам 2 слова - zero knowledge, выучите их. Это всего лишь 2 слова, есть конструкции которые занимают 10 слов, а эта занимает всего 2.
Количество конструкций ничего не говорит про сложность.
хочешь чтобы что-то выполнилось параллельно - юзай горутину, хочешь, чтобы не выполнялось - юзай мютекс,
я не понял, что вы хотите сказать
Вы описали 2% от всей конкурентности го
которые покрывают 99% реальных кейсов
а в сейф блоке что делать? мы же не знаем на этапе компиляции, что там, в указателе
да любой продуктовой разработки
Запретить обращаться туда напрямую, сделать гард на Maybe/Option и явно обработать оба кейса, когда указатель пустой и нет, не давая его разыменовывать
и вот мы явно отрабатываем пустой указатель - что делаем?
Ну тут логика должна быть. Если это непредвиденное состояние то панику и завершать приложение Можно на дефолт валью заменить откуда ж я знаю что нужно
кажетсся, там и так паника и завершение 🙂
А чем Nothing отличается от нулевого указателя?
видимо разница лишь в том, что компилятор не скомпилирует в случае если вы не проверили явно прежде чем dereference'ить
Ага, а потом добавить в прелюд forceDeref, который делает тоже самое (как fromMaybe в хаскеле)
with p != nil { a += *p } думаю товарищ говорит по что-то подобное
go func() { p = nil }() if *p != nil{ fmt.Printf("panic may be here", *p) }
и на этом этапе начинает переизобретении Rust и ему подобных) поэтому лично я придерживаюсь мнения, что если программа предназначена для выполнения X и Y, то с ней положены тесты которые проверяют X и Y, автоматически проверяя на логические и технические ошибки реализации.
Ну я бы посмотрел на раст с gc и горутинами, на самом деле
Зелёные треды есть в расте)
сейчас обучал джаве соседа по квартире и понял, что гошка в одном быстрее пойдет, в другом тяжелее кстати, джава — фу
:):):):)
Обсуждают сегодня