Ну, это печально коль так. Я считаю, что такой поход - это гарантированный фейл в будущем. Раз хотят идеальный язык - сделали-бы что-то типа лиспа. Идеальный язык, ИМХО, только в реальной жизни пользоваться им невозможно.
Вы таки не понимаете сути Go. :) Его реальное приемущество, это модель сообщений? многопоточность и статическая линковка в бинарник. Т.е. это python, но нормальный, без GIL.
В тему Go. Меня чёт удручило, что распространять свою либу в бинарном виде неудобно. Вычитал, что ABI-совместимость не гарантируется даже между минорными релизами. Чтобы собирать проект с бинарной либой через go, нужно к либе подкладывать костыльный исходник, у которого время изменения раньше чем у либы, чтобы сборщик не пытался либу собрать. Мотивчик «простой язык, которым просто пользоваться» тут дал нифиговый такой сбой.
Я хочу просто Чтобы можно было List<Integer> и List<MyComparable> туда подставлять
// Max gets a number of elements as a type that implements
// MyComparator interface. It finds the biggest element
// and returns its index.
func Max(c MyComparator) int {
// ...
}
Тоесть тип спрятали за интерфейсом Interface. Неплохо. А интерфейс надо будет реализовать отдельно для array of int32, array of int64, array of float и так далее?
Гигантские базы Oracle являются подвидом решения для проблем Big Data, но достаточно узким и просто не справляются с большим количеством задач, для которых есть другие решения. Потому нужно знать все существующие подходы к дизайну Big Data систем, а не только один
Иногда не существует настолько Big Hardware. Для компаний поменьше - цена Big Hardware не практична, проще многомашинное решение с более простыми и доступными машинами
А интерфейс надо будет реализовать отдельно для array of int32, array of int64, array of float и так далее?
Да. Но это редко когда нужно. Во всяком случае, я за несколько лет делал подобное единожды - когда пилил свою strconv. Может не тем занимаюсь (backend, microservices - кстати, ещё один hype)?
В стандартной библиотеке в случаях с int, int8, int16, int32, int64 запиливают только int и/или int64. См. тот же стандартный strconv: https://golang.org/pkg/strconv/. Никто от этого не страдает, кроме тех, кто ЯП не использует.
Для меня не секрет что программировать в целом можно было и на фортране и на коболе, и без всяких этих ваших генериков. Только то, что раньше было роскошью безопасности типов - сейчас минимальное требование к нормальному языку
Да как угодно. Реализовывать заново функцию (той же сортировки) для каждого типа не надо. А повторения (хотя бы при реализации интерфейса) да есть. Такой вот trade off между читаемостью и выразительностью.
Есть же люди, которым Rust нравится: нечитаемый шо 3.14здец, а C++ меркнет на его фоне. И ничего. Видимо, каждому своё.
Потому что официальных инструментов нет. Godeps самый стандартный из имеющихся на данный момент
Официальных инструментов нет, но директория Godeps/ - это из протухших мануалов. С появлением флага GO15VENDOREXPERIMENT, стали использовать vendor/ (никаких манипуляция с GOPATH более не требуется). А туда уже можно хоть руками проекты складывать. Но я предпочитаю gvt.
История - это последнее из того что меня беспокоит.
Тогда я вообще не понимаю суть претензий. IMO go get - самая классная штука, которую придумали в Go. Вместо того, чтобы делать анальный централизованный сервер типа all-your-packages.googlecontent.com, сделали универсальное децентрализованное решение. Поверх этого механизма запилили vendoring. Сначало зависимость ищется у тебя в vendor/ директории и только, если не найдена - в чьём-то домашнем гите. Ваши предложения относительно того, как это можно было сделать лучше?
Сначало зависимость ищется у тебя в vendor/ директории и только, если не найдена - в чьём-то домашнем гите
Если зависимость не найдена - ошибку надо выдавать, простую человеческую ошибку.
Как скажи на милость делать воспроизводимую сборку go-проекта, если вы «просто» тащите текущий head всего подряд с любых внешних ресурсов? Как сравнивать результаты unit-тестов если там код каждый раз разный? Как вообще рассчитывать на то что этот код завтра соберется?
руки оторвать разработчикам которые думают что главное достоинство языка - это возможность писать со скоростью 1000 знаков в минуту и ни о чем не думать. А потом - хоть потоп, зато нам было _удобно_.
ну вот представь, что ты делаешь какую-то опердень для банка. И все твое приложение состоит из таблиц, которые с помощью фильтров как-то перемешиваются, чтобы пользователю было удобно это читать. И если у тебя есть какая-то вымученная за неделю красивая вьюха на данные, ты хочешь обобщенным образом с помощью нее сортировать вообще что угодно - и таблички типа 1, и таблички типа 2, и даже таблички типа 123 внутри модальных далоговых окон. При этом таблички отображающие арбузы, такие же как отображающие Дыни, но картинка там не слева, а справа, и цена в шекелях, а не в рублях. При том что табличка типа 2 есть подтип таблички типа 3, являющейся подтипом таблички 123, и эту логику полиморфизма подтипов нужно уважать, и по ночам на коленях молиться Варваре Лисков. Словом, совершенно обычная бизнес фигня, из которой в значительной части состоит сейчас моя работа.
используй glide или еще что-нибудь, чтобы при сборке оно подтягивало тебе каждый раз зависимости во временную, вычеркнутую из гита директорию
в java так работает maven, это тоже не «официальное» решение, в смысле его придумал и поддерживает не Оракл, но при этом совершенно весь мир сидит на мавене, и никто не держит у себя в гите зависимости (кроме старичков 100-летней давности производства)
Как скажи на милость делать воспроизводимую сборку go-проекта, если вы «просто» тащите текущий head всего подряд с любых внешних ресурсов?
1) тяни не голову, а тэг или бранч
2) я постоянно тестирую софт относительно версии с головы всех важных библиотек, каждый день на это трачу хотя бы 30 минут чтобы что-то обновить. Глубинные последствия этих изменений покажут тестировщики на регрессионных тестах и бета-пользователи (когда упадет). Ну да, это стоит денег, но именно так работает современный опенсорц, было бы странным это отрицать и переть против паравоза
я постоянно тестирую софт относительно версии с головы всех важных библиотек
Одно дело тестировать с головы и обновлять, другое - релизить проект, в котором зависимости не указаны, потому что разработчик всегда все брал с мастера и «не заморачивался».
тяни не голову, а тэг или бранч
Я-то тяну, через Godeps и vendorized code, но фишка в том, что «официальное» версионирование зависимостей в go отсутствует. И они этим гордятся.
What are the two major trends in the Linux Server Operating System market?
A. Binary Compatibility of Applications
B. Cloud Computing
C. High Availability
D. Data Center Modernization
Писали недавно приложение на Go. Через неделю оно уже не компилилось из-за зависимостей Т_Т (в контейнере всё собиралось, тестировалось, чтобы как бы должно было воспроизводимое окружение делать, но с го такие фокусы не прокатывают).
В го 2 больших боли - зависимости и ручная обработка ошибок. И в обоих случаях они считают, что это такая фича.
В IT все плохо: конторки стартапов начинают потихоньку скукоживаться,
aкционеры Facebook с факелами собираются у дома Цукерберга,
php-шники начинают изучать Haskell, потому что перспектив
срубить бабла по-быстрому в вебе с каждым днем становится все меньше и меньше,
глава оракл сдает свою яхту разработчикам постгрескл под офис.
Вышел седьмой айфон и телочки массово постят объявления на форумах
«продам айфон 6s за 10.000 руб.», но никому уже не нужен ни шестой айфон,
ни эти телочки. Потому что они старье, позорится с такими только.
Сергей Брин постит бухой в Твиттер свои влажные мечты о добыче руды на Марсе
и о своих планах переехать на Луну, построить там лунопарк с каруселями и
роботоми.
И только у MS все хорошо. А линукс оказался проектом АНБ...
Началось, гугл ставит во главу угла машинное обучение https://geektimes.ru/post/277952/ Цель: обучить каждого, вплоть до самого последнего индуса. Средства: начать со студентов и своих программистов, часть из которых отпустить во внешний мир, чтобы они покусали всех остальных.
А чем тут Go хуже признанного С++? Пример: OpenCV 3rdparty. Ещё встречается под видом third_party (вперемешку субмодулями и так), contrib, vendor или субмодулями прямо в корень.
Что, если при помощи МО автоматически создавать ответы на письма, чтобы избавить пользователей от лишних хлопот по набору текста на крохотных клавиатурках?
Гугл сам по себе превратился в хайп. Пока нейросетки опознавали картинки или иные «данные» это было движение вперед. Но набежали хипстеры и стали лепить игрушку