Pull to refresh
0
0
Send message
Си — слишком укоренился, чтобы его выкинуть.
А не слишком хорош.

Как минимум без Си исчезают все распространенные операционные системы, приличная доля компиляторов/интерпретаторов, туева хуча утилит и базовых библиотек без которых не сможет жить или создаваться софт более высокого уровня и пр. и пр.
Обеспечение переносимости при разработке с C++ — отдельная головная боль.
То есть вы сосредоточены не только на решении задачи, вам нужно еще и с компилятором побороться.

С++ не так просто скомпилировать на разных версиях операционной системы даже при использовании одного и того же компилятора (не говоря уже про разные компиляторы и разные платформы и разные стандарты С++).

Например,
https://github.com/cocaine/cocaine-core
Это одна из базовых технологий Яндекса, сделанная не самыми глупыми программистами.
> 2. Мусорам напоминаю, что факт наличия или отсутствия регистрации имеет право проверять только участковый уполномоченный по месту жительства. У них такого права нет.

2. О, да вы юридически неграмотны, отличаетесь только громким криком, из чего с вами и не связываются.

У нас все сотрудники полиции — имеют полные права.

Это означает, что даже сотрудник ДТП может у вас проверить регистрацию.
Или задержать за нарушение ПДД может участковый.

Формально — они всегда в своем праве.
Фактически этого не делают потому что слишком много нюансов которые сотрудник не знает если не специализируется да и своей непосредственной работы полно.
Данные выбираются из первого доступного среди веток в select.

Так как нет ветки default — то select должен быть заблокирован до тех пор, пока какой нибудь из каналов (wq или done) не будет закрыт или в него не поступят данные.
Пока wq не пуст — все go-routine (видимо doit завернут в go-routine? ) будут считывать данные из него.
Как только wq пуст — будет предпринята попытка прочитать из done.
Поскольку done закрыт — будет завершена процедура

Если вы используете done как сигнал о завершении работы — то следует поместить done выше, сделав его самым первым в select

И закрывать done не сразу, а только тогда, когда вам нужно завершить все go-routine с doit
Есть же замечательные статьи — почему плохи исключения в Java или почему от них отказались в Google для C++.
http://neverworkintheory.org/2016/04/26/java-exception-handling.html
https://google.github.io/styleguide/cppguide.html#Exceptions

Если вкратце: не все так здорово с исключениями.

Лет 20 назад, когда еще были попытки развить тематику исключений в Java, люди в исключения еще верили. И при попытке отказаться от них тогда — вертели бы пальцами у виска.

Сейчас — люди поумнели и смотрят на мир шире.
Для того, чтобы ПОНИМАТЬ то, о чем вы пишете — неплохо бы иметь опыт. Не теоретизировать, а иметь СОБСТВЕННЫЙ опыт.

Пока ваши претензии выглядят так:

«Я привык иначе» — какой же это довод? Все языки разные.
Что из того, что вы привыкли иначе — то же был другой язык.

Вы не недостатки языка описывайте, а свою невозможность изменить вашу личную привычку — но ваша привычка только ваше личное дело.

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

Это всего лишь ваша привычка. И отсутствие у вас опыта работы на больших проектах. Не более того.
Это лично я 4-й год.
До того, когда я начал — я тоже долго присматривался.

Еще задолго до меня началось практическое использование Go в серьезных проектах. Он ведь от рождения создавался не как исследовательский, а как практический проект языка. Со стапелей — сразу в дело.

Появится очередной язык, который делает ЦЕЛЕСООБРАЗНЫМ переписывание — начнут переписывать.

Появился D — переписывать не бросились.

Появился Golang — тогда да, переписывать нагруженные веб-сервисы стало целесообразным.

Много лет назад (ну около 5-6) ваши слова о том, что golang — это всего лишь мода, были бы разумными.

Сейчас — уже мейнстрим, уже несколько лет как мейнстрим.

И проверенный в деле на серьезных задачах в том числе — масштабы Dropbox, Youtube, CloudFlare, Bitbucket и пр. и пр…

Я разве писал, что нельзя уже писать на Java, Python, C# — просто потому что появился Go?

Вопрос в другом: почему вы ожидаете, что Go будет делать то же самое, что и Java? Зачем пихать в Go то, что уже есть в других языках? Тогда это и будет Java, Python, C#. А они УЖЕ есть.

Идеал — недостижим.

Go достаточно развит для серьезного практического использования. Ровно это я и хочу сказать.

На нем УЖЕ и очень ДАВНО пишут серьезнейшие проекты. Крупные конторы. Опытные программисты, которые умнее и вас и меня.

А вы все еще живете в прошлом.

Меняется — маркетинг это за деньги. Вас там убеждают, что черное это белое. Были бы бабки в очередной смене цвета.

Евангелизм — это из опыта, из практики и совершенно бесплатно. Вам ДОБРОВОЛЬНО рассказывают, о том как у них все ПОЛУЧИЛОСЬ.

Вы в каком времени живете?
В крупных проектах уже намного более чем 2 года назад с Ноды сползли в пользу Go.

Ну или вы занимаетесь мелкими поделками — там, да, Нода только только пришла из мира «больших систем».

Я на Go уже 4-й год сижу. И уже тогда golang был в мейнстриме. У вас точно нет машины времени? Вы нам пишете примерно из 2008 года…
Мало ли.
Например, к ноябрью они уже поняли, что это не просто упражнения для ума… — уже точно будет язык. Может имя придумали…

Недостатки есть у всех.

Тем не менее, Докер — мейнстримовый продукт.
ЗАСЛУЖЕНО.
Стандарт де-факто.

Речь вообще о другом.

Разработчики Докера выбрали инструмент — и не прогадали.

Распространенность, в том числе — и благодаря особенностям языка, который упростил его написание, отладку и портирование.

Огромное количество СЕРЬЕЗНЕЙШИХ продуктов реализовано на golang.

Люди поумнее вас и поумнее меня выбрали его — и НЕ ПРОГАДАЛИ.
А вы тут до сих пор ищете идеальный язык…

Кто-то перешел на Go с Node, кто-то c Python, кто-то с Java.
Об массовых ситуация ОБРАТНОГО перехода — не слуху не духу.
Это не маркетинг. А евангелизм.
Он — бесплатный и добровольческий.

Люди освоили, испытали и — делятся опытом. Бесплатно. Это не маркетинг, это не за деньги.

Что вам не нравится?
Что люди УЖЕ освоили Golang, что он уже В МЕЙНСТРИМЕ у многих КРУПНЫХ проектов, а в ВЫ ВСЕ ЕЩЕ ДУМАЕТЕ?
> 5,7. При беглом взгляде на код можно отличить объявление и присваивание?

Да. И такая локаничность объявления очень удобна.

> 8. Почему такая разница в поведении контейнеров?

Ради скорости.

> 12. Чем отличается слайс от указателя на массив?

https://habrahabr.ru/post/202948/

> 13. Неужели индекс элемента при перечислении важнее его значения?

key, value или value, key? Первый порядок — логичнее.

> 22. Кто вообще дал такие привилегии логгеру?

В сложных системах используют другие логгеры.
С помощью интерфейсов они совместимы со стандартными логгерами.
Дропбокс уже перешел на Go,
Докер и сопутствующие утилиты написаны на Go,
Хашимото (DevOps — Consul, Nomad и пр) поднял миллионы с использование Go,
Kubernetes — самая перспективная на сегодня система управления микросервисными контейнерами написана на Go
На Go переписаны нагруженные куски кода в Twitter и Youtube.
CloudFlare в значительной части быстро работает благодаря тому, что код там на Go.
eBay, Bitbucket и пр.

А вы все еще стесняетесь использовать Go?

К чему это я? Я утверждаю, что все эти ребята решили для себя ваши надуманные проблемы.

А вы так и продолжайте ждать пока для Go сделают всё, пока сделают универсальную кнопку, нажав на которую вы сможете решить любую проблему в ИТ — или может лучше самому написать такую кнопку, под свою конкретную задачу?
1. IDE в Go есть уже очень давно:

а) LiteIDE (кстати, написано с использованием самого Go)

б) Jetbrains IntelliJ (а также Android Studio и любые другие на базе IDE Jetbrains, например, PyCharm) — это универсальная IDE, адаптация под любой язык, в том числе и под Go — делается плагином. https://plugins.jetbrains.com/plugin/5047
Этот плагин активно развивается.

в) Есть развитые плагины для основных программистких редакторов, которые превращают эти редакторы практически в IDE — vim-go для vim, есть для Sublime, Emacs, Atom и пр.

2. Если вы используете какую то нестандартную систему вендоринга — извольте подстроить под нее свою IDE. Хотя бы пути укажите вручную.

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

Конечно, инфраструктура не такая развитая как для Java или C#, но вполне сравнима с костылями, которые приходится делать для С++.
Для веба у Go нет острой необходимости в фреймворках. Не переносите стереотипы с других языков.
Для многих случаев вполне достаточно стандартной библиотеки а также не полных фреймворков, а отдельных модулей библиотек, например, из Gorilla Toolkit.
BPM, вероятно, имеет смысл делать на микросервисах — тогда поглядите на Go-Micro.
https://github.com/avelino/awesome-go#gui

Ваша логика такова: язык похож синтаксисом на С — поэтому на нем можно делать десктопные приложения, подобные тем, что делают на С++?

Делать так же как это делают с другими языками — библиотеки для создания GUI для Go есть
http://eax.me/go-gkt-gui/
https://habrahabr.ru/post/253519/
Есть альтернативный путь — например LiteIDE написан с использование Go и QT и еще одного языка ;)

Но, возможно, Вы путаете язык и и нативный дизайнер интерфейсов для него.

Полноценный развитый нативный дизайнер интерфейсов для Go писать уже вряд ли кто будет, как и для любого другого нового языка. Тут ваши советчики правы — например, С# имеет лучшую заточенность на работу с GUI десктопа.

Как только появляется возможность это отключать — в релиз билдят с отключенной проверкой.

Вы никогда не видели в релизе программ, скопилированных с debug-информацией? Мне регулярно встречаются. Такова природа человека — человек ленив.

Импорты — такая уж и не проблема. Нормальные редакторы/IDE для Go сами добавляют/удаляют импорты.

Information

Rating
Does not participate
Registered
Activity