«Python передо мной предстает как каша… а С++ легко читается».
Окей )
Все эти рассуждения про читаемость абстрактны и бессмысленны.
Жаль, если для вас это так. Читабельность кода — это общепризнанно важнейшая характеристика хорошего кода, и Go создавался людьми, которые считают это очень важным аспектом программирования — даже слишком важным, чтобы заложить это в дизайн языка.
Он читает не лучше и не хуже, чем любой другой язык программирования,
Так не бывает. Безотносительно вопроса о Go, у разных языков разные свойства и с этим незачем спорить.
Читаемость она приходит с навыком и опытом на этом языке, а так же, когда сам код простой.
Ну вот вы и сами ответили на свое удивление. Go объективно меньше (меньше абстракций и конструкций, проще грамматика, меньше вещей запоминать, переиспользование знакомых концепций из С-подобных языков и тп) — отсюда вывод, что навыка для достижения «читабельности» нужно меньше, чем с более «большими» языками. А потуги авторов создать программистам стимул писать более простой и читабельный код приводят к тому, что код на Go как правило такой и есть.
Как говориться, «если я просыпаюсь и понимаю, что меня никто не обманывает, я очень сильно напрягаюсь»
Ужас какой )
Вы же понимаете, что дизайн языка влияет на почти любой аспект — от скорости парсера кода до выбора алгоритмов GC. Я не настолько глубоко разбираюсь во внутренностях, но более чем уверен, что простота дизайна Go, отсутствие очень многих сложных концепций, привела ко многим решениями, которые в Java просто не возможны. Это разные языки, у них разная система типов, разные подходы, они по разному решают многие компромиссы — отсюда и разница.
Вы так пишете, будто вам и прямо кто-то «должен» писать посты специально под ваш интерес. Я понимаю ваш поинт, но он называется не «пустой пост» и не «разрабочик GC не должен», а «я интересуюсь подробно внутренностями и хочу найти подробные бенчмарки и научные работы по теме».
то есть 10мс это не STW, а просто постоим покурим?
10ms это верхняя граница STW при критических нагрузках. На самом деле, при совсем пиковых нагрузках пауза таки может быть больше, но в 99.9% она будет ниже 10ms. Обычно это микросекунды, конечно.
если пихать везде write barrier, то и производительность можно просадить.
Ничего себе пустой пост. Создатель GC доступными словами рассказывает, как GC работает, его алгоритм, что стоит за принятыми решениями, сравнивая его с реализациями других языков, и какие приоритеты и планы на будущее.
Go задумывался как низкоуровневый язык — последователь C/C++, но фактически получилась где-то менее удобная, где-то более удобная альтернатива Ruby и Python'у.
Ну нет же :) Go задумывался, как решение проблем С++ для того класса софта, который был необходим Google в больших количествах (клауд, сеть, etc), и он свою цель выполнил. Но это не тождественно утверждению «Go задумывался как низкоуровневый язык». А программисты С++ неактивно переходят на Go, потому что им сложно отказаться от всей той сложности, которую они учили годами, чтобы дойти до уровня «могу написать сетевой сервис, который не будет падать». Многие (по моему опыту) до сих пор считают, что важнее сэкономить 3 такта процессора, чем месяц рабочего времени. Слишком долго это вбивалось в голову, чтобы принять новые реалии. У Python-разработчиков такого нет, они гибче в общем случае и более открыты к новым технологиям.
А кто вам сказал, что я поднимаю low-level в приоритет?
Вы, когда написали, что изучать программирование нужно с игрушек для понимания ассемблера. Хотя перечитал ваше сообщение, и вы там Delphi называете низкоуровневым языком, видимо мы о разных low-level.
Проблема с фундаметальными, низкоуровневыми, знаниями в том, что их нельзя выучить когда «будет надобность»
И что же мешает человеку, умеющему писать алгоритм поиска в ширину на Паскале, взять книжку по ассемблеру или курс на курсере по устройству процессоров, и углубиться как угодно подробно в любую тему? Мне кажется, вы сейчас какой-то свой опыт экстраполируете на всех.
Go как раз хорош, как первый язык, по вашим же аргументам, по двум причинам — с одной стороны, он достаточно легкий для освоения, с другой — он достаточно низкоуровневый, чтобы уметь работать с битами, с поинтерами и давать хороший инсайд в то, что происходит под капотом (escape-анализ, ассемблерный вывод и тп).
Окей )
Жаль, если для вас это так. Читабельность кода — это общепризнанно важнейшая характеристика хорошего кода, и Go создавался людьми, которые считают это очень важным аспектом программирования — даже слишком важным, чтобы заложить это в дизайн языка.
Так не бывает. Безотносительно вопроса о Go, у разных языков разные свойства и с этим незачем спорить.
Ну вот вы и сами ответили на свое удивление. Go объективно меньше (меньше абстракций и конструкций, проще грамматика, меньше вещей запоминать, переиспользование знакомых концепций из С-подобных языков и тп) — отсюда вывод, что навыка для достижения «читабельности» нужно меньше, чем с более «большими» языками. А потуги авторов создать программистам стимул писать более простой и читабельный код приводят к тому, что код на Go как правило такой и есть.
Ок )
Ужас какой )
Вы же понимаете, что дизайн языка влияет на почти любой аспект — от скорости парсера кода до выбора алгоритмов GC. Я не настолько глубоко разбираюсь во внутренностях, но более чем уверен, что простота дизайна Go, отсутствие очень многих сложных концепций, привела ко многим решениями, которые в Java просто не возможны. Это разные языки, у них разная система типов, разные подходы, они по разному решают многие компромиссы — отсюда и разница.
10ms это верхняя граница STW при критических нагрузках. На самом деле, при совсем пиковых нагрузках пауза таки может быть больше, но в 99.9% она будет ниже 10ms. Обычно это микросекунды, конечно.
Уверен, Хадсону об этом не нужно рассказывать. scholar.google.com/citations?user=FejSLgQAAAAJ&hl=en
Не видел в статье утверждений, что они пытаются достичь pauseless сборщика.
Ну нет же :) Go задумывался, как решение проблем С++ для того класса софта, который был необходим Google в больших количествах (клауд, сеть, etc), и он свою цель выполнил. Но это не тождественно утверждению «Go задумывался как низкоуровневый язык». А программисты С++ неактивно переходят на Go, потому что им сложно отказаться от всей той сложности, которую они учили годами, чтобы дойти до уровня «могу написать сетевой сервис, который не будет падать». Многие (по моему опыту) до сих пор считают, что важнее сэкономить 3 такта процессора, чем месяц рабочего времени. Слишком долго это вбивалось в голову, чтобы принять новые реалии. У Python-разработчиков такого нет, они гибче в общем случае и более открыты к новым технологиям.
Вы, когда написали, что изучать программирование нужно с игрушек для понимания ассемблера. Хотя перечитал ваше сообщение, и вы там Delphi называете низкоуровневым языком, видимо мы о разных low-level.
И что же мешает человеку, умеющему писать алгоритм поиска в ширину на Паскале, взять книжку по ассемблеру или курс на курсере по устройству процессоров, и углубиться как угодно подробно в любую тему? Мне кажется, вы сейчас какой-то свой опыт экстраполируете на всех.
Go как раз хорош, как первый язык, по вашим же аргументам, по двум причинам — с одной стороны, он достаточно легкий для освоения, с другой — он достаточно низкоуровневый, чтобы уметь работать с битами, с поинтерами и давать хороший инсайд в то, что происходит под капотом (escape-анализ, ассемблерный вывод и тп).