The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Релиз языка программирования Go 1.9

26.08.2017 09:22

После шести месяцев разработки компания Google представила релиз языка программирования Go 1.9, который позиционируется как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD.

Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.

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

Основные новшества, представленные в выпуске Go 1.9:

  • В язык добавлена возможность определения псевдонимов типов, которая может оказаться востребована при проведении рефакторинга кода и постепенного перевода проектов на новые API. Например, при помощи конструкции "type T1 = T2" для существующего типа "T2" можно определить псевдоним с именем "T1" по аналогии с тем как имя "byte" является псевдонимом типа "uint8";
  • В состав включен новый пакет math/bits, предоставляющий функции для битовых операций и манипуляции беззнаковыми целыми числами с задействованием при возможности специальных инструкций CPU. Например, на системах x86-64 функция bits.TrailingZeros(x) будет выполняться с использованием инструкции BSF;
  • В пакет sync добавлен новый тип Map, который возможно применять в многопоточных приложениях. Данный тип в некоторых деталях отличается от штатного типа map, поэтому не предназначен для его прозрачной замены;
  • В пакет testing добавлен новый метод Helper, применимый с объектами testing.T и testing.B. При помощи данного метода можно организовать вывод номера строки вызывающей функции при возникновении ошибки, вместо указания ссылки на фактический номер строки, из которой вызван метод t.Fatal;
  • В пакете time обеспечено прозрачное отслеживание монотонного времени (время, прошедшее с определённого момента) для всех значений Time, что позволяет обеспечить надёжный расчёт разницы между двумя значениями Time без влияния таких факторов как изменение времени или подстановка лишней секунды.
  • Для ускорения процесса сборки реализована поддержка параллельной компиляции разных функций в пакете.


  1. Главная ссылка к новости (https://blog.golang.org/go1.9...)
  2. OpenNews: Релиз языка программирования Go 1.8
  3. OpenNews: Проект Go опубликовал собственный шрифт для программистов
  4. OpenNews: Выпуск языка программирования Go 1.7
  5. OpenNews: Доступен язык программирования Go 1.6
Лицензия: CC-BY
Тип: Программы
Ключевые слова: golang, go
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (106) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.2, Аноним (-), 10:28, 26/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –13 +/
    geth (go ethereum) синхронизируется неделями, беспощадно насилуя систему. Вот она, производительность Go.
     
     
  • 2.3, Аноним (-), 10:43, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –9 +/
    Так в наше время под "высокой производительностью компилируемых языков" подразумевают скорость на уровне джавы, что печально
     
     
  • 3.47, Аноним (-), 18:44, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +21 +/
    В подавляющем большинстве случаев проблема в алгоритме и структурах данных, а не в языке программирования. Нормальный программист на пхп напишет эффективнее, чем хипстер на си.
     
     
  • 4.63, Аноним (-), 01:21, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Сервер на Go против сервера на Java говорит сам за себя 13ms против 52ms на прогретом окружении. Понятно что конечно ситуация синтетическая, но таки непонятно почему в пять раз медленее статический "Hello, world" отдает.
     
     
  • 5.67, Аноним (-), 12:19, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Что тут непонятного? Нативный код против эмулятора.
     
     
  • 6.71, Аноним (-), 12:38, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Что тут непонятного? Нативный код против эмулятора.

    Go у нас теперь эмулируется? Или у жабы отменили JIT?


     
     
  • 7.104, Аноним (-), 16:59, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    OK, нативный код против эмулятора с JIT.
     
  • 5.88, лютый жабист__ (?), 06:28, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > непонятно почему в пять раз медленее статический "Hello, world" отдает

    C фороникса сбежал? Сделай нормальный бенчмарк, с кучей хотя бы с 10ГБ (а лучше 50-100) и хоть каким-то движением в ней. Сразу увидишь убогость go-йского non-compacting GC.

     
  • 4.73, Аноним (-), 12:55, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • –10 +/
    Подавляющее большинство алгоритмов - линейная последовательность с парой ветсвлений. Там ошибиться негде.
     
     
  • 5.83, Аноним (-), 19:51, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Откуда же тогда берутся бажные программы? Рептилоиды баги в них запихивают?
     
  • 5.108, rshadow (ok), 22:07, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В подавлющем большинстве софта алгоритмов раз два и обчелся. В основном БД, бизнес логика и интерфейс. И все это ляпают кто как умеет.
     
  • 2.6, funny.falcon (?), 11:08, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Если программу писал криворукий кодер, значит язык виноват? Странная точка зрения.
     
     
  • 3.16, Аноним (-), 14:22, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Не правда. Над geth работает большая команда профессиональных разработчиков. На данный момент это самый популярные ethereum клиент. А иссурки висят, их много: https://github.com/ethereum/go-ethereum/issues?page=1&q=is%3Aissue+is
    Пофиксить синхронизацию никак не получается уже очень долго. Они уже добавили режим fast, добавили кэши, которые все выкручивают до запредельных значений, и все равно ситуацию это не спасает.
     
     
  • 4.42, funny.falcon (?), 17:24, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    И что Если проблема принципиально решается, и её не смогли решить - значит проб... текст свёрнут, показать
     
     
  • 5.109, rshadow (ok), 22:11, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > в 2-3 раза.
    > в 5 раз

    Это уже уровень производительности скриптовых языков.

     
  • 3.21, Аноним (-), 14:34, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Одну нет, но совокупность программ вполне могут говорить о качествах языка. В данном конкретном случае версия 1.7.0 на подходе. Если разработчикам за столько времени и выпущенных версий не удалось решить проблему производительности, значит её корни лежат за пределами доступа разработчиков, в языке и/или применяемых библиотеках.
     
     
  • 4.41, funny.falcon (?), 17:18, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Или в алгоритмах, которые эти разработчики пытаются реализовать или используют.
     
  • 2.15, лютый жабист__ (?), 13:25, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А язык причём? На чём клиент btc написан? На сях небось. С нуля блокчейн качался больше недели

    Дело в хайпе, а не тормозах яп

     
     
  • 3.17, Аноним (-), 14:23, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Bitcoin core написан на с++, у него нет никаких проблем с синхронизацией.
     
     
  • 4.23, лютый жабист__ (?), 14:48, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Проблем никаких, но 122гб блокчейна качается  8 дней
     
     
  • 5.33, Аноним (-), 16:38, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Рад за вас, ethereum у меня синхронизируется без конца, вот уже 2 недели. При том всё медленнее и медленнее.
     
     
  • 6.50, Аноним (-), 19:05, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и выкинь его.Взял какую-то какашку, а теперь жалуешься, что она воняет. Какашки всегда воняют, и о качестве того, чем они были до попадания в пищеварительную систему, это не говорит.
     
  • 5.51, Дегенератор (?), 19:10, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    140Gb месяц качал на 200 Мбит
     
  • 5.119, Аноним (-), 16:06, 29/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Так надо же:
    1. Базу блок-чейна хранить на ssd.
    2. С опцией клиента -prune 2048
     
  • 3.18, Аноним (-), 14:25, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Они оптимизировали синхронизацию, теперь она занимает где-то 2 часа, зависит от системы.
     
     
  • 4.28, Sasha (??), 16:04, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В смысле 122 гига на моих 10 мегабитах будет выкачивать за 2-3 часа? огооо архиватор попова какой-то? или как это она так сжимает блокчейн, выкачивает, а потом у меня на компе распаковывает?
     
     
  • 5.30, Аноним (-), 16:33, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –8 +/
    10 мегабит - таких тарифов уже давно нет. У скайнета минимум 50 мегабит ненужных за 350 рублей. Если бы был у кого-то такиф 10 мегбит, я бы первый с радостью перешел на него.
     
     
  • 6.32, Аноним (-), 16:37, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +14 +/
    > 10 мегабит - таких тарифов уже давно нет. У скайнета минимум 50

    За МКАДом жизни нет!


     
     
  • 7.34, Аноним (-), 16:39, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Я за МКАДом, если чё. И тарифов 10 мегабит не существует лет 5, как DSL вымер.
     
     
  • 8.38, Аноним (-), 16:58, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А причем тут тариф Если максимально доступная скорость не превышает 10 мбит, то... текст свёрнут, показать
     
  • 8.75, Ilya Indigo (ok), 13:50, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я вообще на PPPoE сижу отнюдь не по собственному желанию, а также приходится 150... текст свёрнут, показать
     
  • 8.81, neverendingnevelny (?), 19:00, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    DSL еще жив Причем не так далеко от мкада И это нетрудно - ведь когда кроме РТ... текст свёрнут, показать
     
  • 7.36, Аноним (-), 16:43, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Провайдерам не выгодны такие низкоскоростные тарифы, т.к. трафик сейчас относительно дешевый, а 10 мегабит вполне достаточно для FullHD. Все бы подключались к таким тарифам. Поэтому сейчас только задранные по скорости тарифы по соответствующей плате.
     
     
  • 8.40, Аноним (-), 17:10, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Мля, откуда вы такие лезете, а Вы что, совсем не допускаете даже мысли о том, ч... текст свёрнут, показать
     
  • 8.58, Наноним (?), 21:46, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Мля, откуда вы такие лезете, а Вы что, совсем не допускаете даже мысли о том, ч... текст свёрнут, показать
     
     
  • 9.60, лютый жабист__ (?), 23:13, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И чё прикопались к скорости инета МКАД, ЗАМКАД В случае с btc тупо канал не у... текст свёрнут, показать
     
     
  • 10.68, Лис (?), 12:33, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Лол, толку от твоего реального айпи если ты порт не высунул ССЗБ ... текст свёрнут, показать
     
  • 9.72, Аноним (-), 12:41, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Очередной клоун ... текст свёрнут, показать
     
  • 2.57, Лис (?), 21:06, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Попробуйте открыть входящие порты, заметил что разные блокчейны с закрытыми портами ведут себя не очень адекватно.
    Блокчейн сама по себе не эффективная с точки зрения производительности технология.

    К слову, как правило там внутри leveldb что не есть самая быстрая БД, но зато наиболее экономная по месту и в целом самая сбалансированная, если судить по этим тестам:
    https://www.influxdata.com/benchmarking-leveldb-vs-rocksdb-vs-hyperleveldb-vs-

     
  • 2.114, iPony (?), 11:11, 29/08/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > geth (go ethereum) синхронизируется неделями,

    А docker написан на go - и это один из самых фапабельных ПО, что я знаю.
    Наверно дело не в бобине.

     
     
  • 3.120, _ (??), 17:07, 29/08/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Мужду нами девочками - он только и ноден чтобы недо-лошади на него ... мнээээ ... фапали :-))) В продакшене (за редкими исклбчениями) - докер это боль! :-\  Впрочем _НЕ_ из за Go :) А из-за аффтарафф ...
     
  • 3.124, Led (ok), 00:44, 30/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > А docker написан на go - и это один из самых фапабельных ПО, что я знаю.

    Для пони и кобыла - невеста.

     

  • 1.4, Крутой аноним (?), 10:45, 26/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > и обеспечивает возможность использования сборщика мусора.

    А можно и не использовать сборщик мусора?

     
     
  • 2.7, funny.falcon (?), 11:18, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> и обеспечивает возможность использования сборщика мусора.
    > А можно и не использовать сборщик мусора?

    Есть много техник, позволяющих уменьшить кол-во создаваемого мусора.

    В принципе, ни кто не мешает на чистом Go написать malloc-free. Просто со встроенными типами будет не легко работать.

     
  • 2.9, trolleybus (?), 12:01, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Можно. Rust его и не использует
     
  • 2.12, Аноним (-), 13:02, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Никто не запрещает делать типы с выделением памяти под них через malloc.
     
  • 2.25, лютый жабист__ (?), 14:52, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Если программа уровня хелловёлд, то гц не отработает даже. Если прога большая то гц это не минус, а плюс.
     
     
  • 3.64, pripolz (?), 08:44, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    знаю 2 случая косяков, связанных со сборкой.
    1 на джаве: в библиотеке jetty СМ просто не справлялся на больших нагрузках и со временем уводил программу в OOM.

    2 на C#: сборщик освобождал то, что не должен был. Прогеры долго танцевали с бубном, пытаясь как-то это обойти. Обратились в техподдержку, и те сказали "да, мы знаем, что такой баг есть. КОГДА-НИБУДЬ починим"

     
     
  • 4.84, Аноним (-), 19:54, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А при чём тут Go?
     
  • 4.89, лютый жабист__ (?), 06:33, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > 1 на джаве: в библиотеке jetty СМ просто не справлялся на больших нагрузках и со временем уводил программу в OOM.

    У жабовых GC максимальная скорость мусора сборки гигабайты в секунду. Если чё-то там где-то не успевало, вывод - прога генерила десятки гигабайт мусора в сек. Шо как бэ намекает на то, из чего сделан прогер 8)))

     
     
  • 5.91, Аноним (-), 11:04, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > У жабовых GC максимальная скорость мусора сборки гигабайты в секунду.

    И он работает не переставая, или всё-таки даёт выполниться какому-то другому коду?

     
     
  • 6.94, лютый жабист__ (?), 11:22, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >> У жабовых GC максимальная скорость мусора сборки гигабайты в секунду.
    > И он работает не переставая, или всё-таки даёт выполниться какому-то другому коду?

    Не знаю как в GO, а вот жаба получается быстрее си в плане управления памятью. 8)

    Т.к. сишники в основном потоке делают new и delete, reallocate итд для дефрагментации памяти, а жабка этим занимается в отдельных потоках, большая часть фаз сборки выполняется ПАРАЛЛЕЛЬНО с основной прогой. В отличие от могучего си...

     
     
  • 7.98, Аноним (-), 13:40, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Вопрос был не об этом. Эта фантастическая скорость в "гигабайты в секунду" — это когда gc запущен, так? А как часто он запускается, и какова средняя скорость сборки? Только её есть смысл сравнивать со скоростью замусоривания.
     
     
  • 8.112, лютый жабист__ (?), 05:22, 29/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если на самом деле интересно С достаточно толстой задачи - распарсить 750ГБ X... текст свёрнут, показать
     
  • 7.103, Аноним84701 (ok), 16:16, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Т.к. сишники в основном потоке делают new и delete,  reallocate итд для дефрагментации памяти
    >  сишники  ... new и delete, reallocate  ... дефрагментации памяти

    Я правильно понимаю, что и все остальные рассуждения и "аргументы" такого же "качества"?

     
     
  • 8.111, лютый жабист__ (?), 04:46, 29/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У тебя этим занимается специальный класс в отдельном потоке Наверное называется... текст свёрнут, показать
     
     
  • 9.113, Аноним (-), 10:17, 29/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В сишечке нет классов, new и delete ... текст свёрнут, показать
     
     
  • 10.115, лютый жабист__ (?), 12:04, 29/08/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Наиболее могучие сишники не умеют плюсики Очень смешно ... текст свёрнут, показать
     
     
  • 11.116, Аноним (-), 13:43, 29/08/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Наиболее лютые жабисты не видят разницы между C и C Очень грустно 8230 ... текст свёрнут, показать
     
  • 9.131, pripolz (?), 18:04, 04/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Во первых, нормальные быстрые проги вообще в основном рантаймовом цикле ничего н... текст свёрнут, показать
     
  • 4.110, Ilya (??), 03:49, 29/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > C#: сборщик освобождал то, что не должен был. Прогеры долго танцевали с бубном,

    Пять лет работаю с дотнетом, встречался с такими ситуациями только в руководствах. Но да, технически это возможно.

     
  • 2.46, Аноним (-), 18:35, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> и обеспечивает возможность использования сборщика мусора.
    > А можно и не использовать сборщик мусора?

    Можно. Разрешаю.


     
  • 2.65, pripolz (?), 08:45, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А можно и не использовать сборщик мусора?

    Если крафтовое пиво обсохло на бороде

     

  • 1.8, Аноним (-), 11:52, 26/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > при этом код легко читается и воспринимается

    .. если вы уже специалист по Go.

    > Данный тип в некоторых деталях отличается от штатного типа map, поэтому не предназначен для его прозрачной замены

    Вот она, расплата за отсутствие дженериков..

     
     
  • 2.14, Аноним (-), 13:20, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> Данный тип в некоторых деталях отличается от штатного типа map, поэтому не предназначен для его прозрачной замены
    > Вот она, расплата за отсутствие дженериков..

    Какая расплата и причем тут дженерики? Этот тип предназначен для постоянного набора ключей и сильно сливает стандартному по скорости добавления/удаления ключей. Странно было бы если бы не было никаких потерь из-за встроенных мютэксов.

     
  • 2.11, Аноним (-), 12:35, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Cектантов спросить забыли.
     
     
  • 3.37, Аноним (-), 16:44, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Действительно. Причин предостаточно и вспоминать D для этого не нужно.
     
     
  • 4.55, Аноним (-), 19:55, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Причин чего? Перестань разговаривать сам с собой.
     
  • 2.19, Аноним (-), 14:29, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ух ты, оказывается, если переносить всё на свете на следующую строку и оставлять пробелы, код будет казаться объемнее!
     
  • 2.20, Аноним (-), 14:30, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Это разве показатель? Код на Go я понял, на D - нет, при том никогда не писал ни на том, на на другом. Почему D вдруг лучше?
     
     
  • 3.27, zz (??), 15:08, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А вот я как раз понял на D
     
  • 2.22, Аноним (-), 14:35, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Никто не мешает написать свою либу, чтобы было так же коротко, как на D.
     
     
  • 3.31, Аноним84701 (ok), 16:35, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Никто не мешает написать свою либу, чтобы было так же коротко, как на D.

    Не знаю, что там с либами в первом примере, но во втором – тот же "reduce"  заменяется банальным циклом на две-три строки по типу гошного.
    И основной упор там, как я понял, как раз таки  на демонстрацию экономии массы лишних телодвижений (с сохранением строгой типизации и соотв. возможности оптимизации компилятором) с помощью дженериков.


     

  • 1.48, Аноним (-), 18:59, 26/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    ~~Абстрактный полиморф~~генерики уже завезли?
     
     
  • 2.53, Аноним (-), 19:25, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Зачем они? Научись использовать интерфейсы.
     
     
  • 3.96, Аноним (-), 11:48, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    ^ Gо-шники во всей красе. "генерики ни нужны, будем копипастить и костылить интерфейсами"
     
     
  • 4.101, Аноним (-), 15:38, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    И ты учись. Когда научишься, копипастить не придётся.
     
  • 4.102, Аноним (-), 15:40, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > ^ Gо-шники во всей красе. "генерики ни нужны, будем копипастить и костылить
    > интерфейсами"

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

     
  • 4.105, Аноним (-), 19:09, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вопрос не в том нужны ли они. А в том, что если ты хочешь сколотить обычный табурет, то нет смысла использовать шурупы что бы в будущем его можно было разобрать. Задача сделать дешевый и простой табурет.
     
     
  • 5.107, Аноним (-), 20:23, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да нет, тут дело в другом. В Go принципиально отсутствуют инструменты, позволяющие делать одно и то же. Есть шурупы, но только под крестовую отвёртку. В некоторых других языках дают полный ассортимент — и под плоскую отвёртку, и под шестигранник, и под всякие звёздочки, и с левой резьбой… В итоге приходится для разработчиков сочинять всякие политики, какими шурупами надлежит пользоваться, чтобы не приходилось с собой всегда полный набор инструментов таскать (см. например https://google.github.io/styleguide/cppguide.html). В случае Go язык сразу создаётся вместе с политикой, и ничего, политике не соответствующего, в нём просто нет.
     

  • 1.59, pripolz (?), 22:57, 26/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    А что лучше, C# или Go?
     
     
  • 2.61, Led (ok), 23:15, 26/08/2017 [^] [^^] [^^^] [ответить]  
  • +10 +/
    > А что лучше, C# или Go?

    1C (1-е сентября).

     
  • 2.62, ffirefox (?), 00:13, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    AngelScript


     
  • 2.85, vantoo (ok), 20:03, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Visual Basic 6.0, конечно.
     

  • 1.79, Аноним (-), 17:48, 27/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Слушайте, отвалит от Golang типа "не производительный". Вон мейлру (извините) переходит на него потому как рукоплещет горутинам и производительности.
    Руки распрямите.
     
     
  • 2.86, Led (ok), 20:21, 27/08/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > мейлру (извините)

    Нет, этому нет прощения.

     
  • 2.87, Аноним (-), 06:14, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще то нет. Вы явно не видите леса за деревьями.
     

  • 1.90, Аноним (-), 09:16, 28/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Все эти языки приводят к распущенности. Программы на них тормозят не из-за того, что язык в какие-то 2-3 раза медленнее по своей структуре, а из-за того, что разработчика никак не волнует накладная стоимость применяемых структур и операций, которая в итоге вырастает многократно. Логика всех C#, Go, python,... программистов - язык сам всё оптимизирует. Но даже чисто физически это возможно далеко не всегда.
     
     
  • 2.92, Аноним (-), 11:08, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Просто это не программисты. Человек, освоивший какой-то (любой) язык программирования, ещё не становится программистом. Надо хотя бы минимальные представления об алгоритмах иметь.
     
  • 2.93, лютый жабист__ (?), 11:17, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Все эти языки приводят к распущенности. Программы на них тормозят не из-за
    > того, что язык в какие-то 2-3 раза медленнее по своей структуре,
    > а из-за того, что разработчика никак не волнует накладная стоимость применяемых
    > структур и операций,

    Может ещё не поздно тебя полечить... :)) Слушай сюда: коттедж лучше всего строить из кирпичей. Но это не значит, что можно построить небоскреб из кирпичей. А если небоскреб надо построить за 20 дней, то увы и ах, могучие каменщики, которые вручную мажут раствором и веревочкой меряют кривизну стены просто идут далеко-далеко.

     
     
  • 3.106, Аноним (-), 20:01, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Слушай сюда: коттедж лучше всего строить из кирпичей.

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

     
  • 3.117, dq0s4y71 (ok), 14:57, 29/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > А если небоскреб надо построить за 20 дней...

    "Небоскрёбы" (т.е. серьёзные программы уровня ядра ОС или компилятора) за 20 дней не пишутся, друг мой. За 20 дней пишутся гoвнoприложения для смартфона на Джаве, и для этого Джава замечательно подходит. А ядра ОС и пр. делают именно "каменщики", которые вручную мажут раствором и веревочкой меряют кривизну стены, да-да.

     
     
  • 4.125, лютый жабист__ (?), 05:18, 30/08/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> А если небоскреб надо построить за 20 дней...
    > "Небоскрёбы" (т.е. серьёзные программы уровня ядра ОС или компилятора) за 20 дней
    > не пишутся,

    И эти люди кичатся сверхинтеллектом, переключаемость нулевая. Я написал про небоскрёбы и 20 дней. Китаёзы строят небоскребы за 20 дней. Что ещё непонятно?

    Линукс на си пишут уже 26 лет потому что Торвальдс не осилил плюсы. Когда он помрёт и проектом начнет рулить другой, всё сильно поменяется. И верёвочки и каменщики могут внезапно пойти далеко далеко...

     
     
  • 5.126, dq0s4y71 (ok), 16:19, 30/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Линукс на си пишут уже 26 лет потому что Торвальдс не осилил плюсы.

    Ога, а JVM почему на Си написана? Потому что жабисты даже жабу не осилили?

     
     
  • 6.127, лютый жабист__ (?), 08:04, 31/08/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >> Линукс на си пишут уже 26 лет потому что Торвальдс не осилил плюсы.
    > Ога, а JVM почему на Си написана? Потому что жабисты даже жабу
    > не осилили?

    Для развития загугли list of java virtual machines

    Потом на чём написан HotSpot

    Потом на чём написан весь стек JavaEE и тонны жабобиблиотек.

     
     
  • 7.128, dq0s4y71 (ok), 13:46, 31/08/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Для развития загугли list of java virtual machines

    Загуглил.

    https://en.wikipedia.org/wiki/List_of_Java_virtual_machines

    Навскидку:

    Avian на C++
    CACAO на C++
    HaikuVM на C/C++

    Больше не проверял, остальные, наверное, на джаве..

    > Потом на чём написан HotSpot

    http://www.stroustrup.com/applications.html

    "The HotSpot Java Virtual Machine is written in C++ (this is the leading edge, high performance replacement for Sun's "classic JVM" which was written in C)."

    А есть хотя бы один компилятор С++, написанный на Джаве? А ядро ОС промышленного уровня? Ну ладно, профессиональный видео-редактор? Может быть, CAD?

    Нетути.

    Игрушечную ОС, студенческую поделку, bloatware-монстра написать - можно, а что-то действительно сложное, производительное, долгоживущее - нет. Такие дела...:(

     
     
  • 8.129, лютый жабист__ (?), 05:29, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И где там си сплошь плюсы Школу закончишь, поумнеешь ... текст свёрнут, показать
     
     
  • 9.130, dq0s4y71 (ok), 16:11, 01/09/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Слив, кагрццо, засчитан ... текст свёрнут, показать
     
  • 2.97, Аноним (-), 13:31, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Можете попробовать конкатенативную парадигму.
     
  • 2.118, dq0s4y71 (ok), 15:11, 29/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Теоретически, правильно, но дело в том, что приоритеты за последние несколько десятилетий изменились. Машины стали быстрее, вместимее, более user-oriented (следовательно основное время тратят на ожидание ввода от пользователя), следовательно быстродействие и прожорливость стали не так важны. С другой стороны, стали более важны быстрота разработки и лёгкость поддержки приложений. Ну, и плюс программирование стало массовой профессией. Так что, естественно, что эти языки становятся мейнстримом для прикладного программирования.
     

  • 1.95, Анонага (?), 11:45, 28/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    lol no generics
     
     
  • 2.99, leap42 (ok), 15:17, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +/
    вот расскажите мне, пожалуйста, зачем вам обобщенное программирование в языке низкого уровня?
     
     
  • 3.100, Аноним (-), 15:32, 28/08/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > языке низкого уровня

    Вы темой ошиблись, тут про Go.

     

  • 1.121, Аноним (-), 18:06, 29/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Язык Go разрабатывался как язык системного программирования для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах.
    Он может рассматриваться как попытка создать замену языку Си.

    Неужели язык Си плох тем, что там не поддерживается generic programming?
    Тоже самое, я думаю, относится и к языку Go.

     
  • 1.122, Аноним (-), 23:16, 29/08/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Язык Go разрабатывался как язык системного программирования
    > Он может рассматриваться как попытка создать замену языку Си.

    Где ты такую глупость вычитал?

     
     
  • 2.123, Аноним84701 (ok), 00:41, 30/08/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> Язык Go разрабатывался как язык системного программирования
    >> Он может рассматриваться как попытка создать замену языку Си.
    > Где ты такую глупость вычитал?

    https://blog.golang.org/go-one-year-ago-today
    > We set out to build a language for systems programming - the kinds of programs one might typically write in C or C++ - and
    > we were surprised by Go’s utility as a general purpose language.

    https://github.com/golang/go/wiki/GoForCPPProgrammers
    > Go is a systems programming language intended to be a general-purpose systems language, like C++.
    > These are some notes on Go for experienced C++ programmers.

    https://golang.org/doc/faq
    > Go was born out of frustration with existing languages and environments for systems programming.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру