The OpenNET Project / Index page

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

В рамках проекта gonix, развивается реализация unix-утилит на языке Go

09.05.2015 14:28

Представлен первый экспериментальный выпуск проекта gonix, в рамках которого развивается реализация стандартных unix-утилит, созданная с использованием языка программирования Go. Код проекта распространяется под лицензией GPLv3. В настоящее время уже полностью готовы утилиты dirname, false, sleep, tee, true и yes, работоспособны с некоторыми ограничениями basename, cat, cp, echo, head, mkdir, nl, pwd, seq, tail, touch и xxd. Предстоит реализовать bc, dc, ed, ls, more и rm.

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

Дополнение: проект переименован в go-coreutils.

  1. Главная ссылка к новости (https://github.com/polegone/go...)
  2. OpenNews: В рамках проекта jvm.go развивается вариант JVM, написанный на языке Go
  3. OpenNews: Увидел свет язык программирования Go 1.4
  4. OpenNews: Язык программирования Go переходит с Mercurial на Git и GitHub
  5. OpenNews: В кодовую базу LLVM приняты биндинги для языка Go
  6. OpenNews: Представлен новый открытый проект Google - язык программирования Go
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/42198-golang
Ключевые слова: golang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (134) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 14:38, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Объясните мне кто-нибудь из тех, кто пишет на С (мнение Go-недопрогаммистов неинтересно) нафига это нужно?
     
     
  • 2.2, Аноним (-), 14:48, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Объясните мне кто-нибудь из тех, кто говорит на русском (мнение англо-недочеловеков неинтересно) нафига это нужно?
    Пофиксил, не благодари.
     
     
  • 3.14, Аноним (-), 15:30, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Объясните мне кто-нибудь из тех, кто говорит на русском (мнение англо-недочеловеков неинтересно)
    > нафига это нужно?
    > Пофиксил, не благодари.

    Just for fun

     
     
  • 4.30, cmp (ok), 18:04, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    фор фан делаются вещи для души, а это - как арматуру ноздрями гнуть, абсолютно бесполезно.
     
     
  • 5.125, Аноним (-), 16:03, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Так себя обычно утешают люди с отсутствующим воображением и творческими способно... большой текст свёрнут, показать
     
     
  • 6.142, mine (ok), 19:28, 12/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Так себя обычно утешают люди с отсутствующим воображением и творческими способностями.
    > И сами себе пытаются доказывать крайнюю полезность собственного унылого цикла "дом-работа-магазин".

    Так себя обычно утешают наркоманы.

     
     
  • 7.144, Аноним (-), 15:48, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> Так себя обычно утешают люди с отсутствующим воображением и творческими способностями.
    >> И сами себе пытаются доказывать крайнюю полезность собственного унылого цикла "дом-работа-магазин".
    > Так себя обычно утешают наркоманы.

    Все кто мыслят по-другому - наркоманы. Тоже вполне себе утешение.

     
     
  • 8.145, cmp (ok), 18:48, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    да вы бред несете, какое воображение какието хипстеры переписали стандартные ут... большой текст свёрнут, показать
     
     
  • 9.146, Аноним (-), 12:00, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    У вас нет никаких фактов, что это недоязык А только лишь комплексы неполноцен... большой текст свёрнут, показать
     
     
  • 10.147, cmp (ok), 15:04, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Это просто бомба, отдуши поржал Но в целом плохо, ноздри-арматура, че ты к слов... большой текст свёрнут, показать
     
  • 10.148, а (?), 13:25, 14/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ехала автоматизация через автоматизацию и автоматизацией погоняла ... текст свёрнут, показать
     
  • 4.35, кевин (?), 18:41, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    это называется академический интерес.
     
     
  • 5.52, Вадик (??), 20:26, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    "Делай это, даже если это нужно только тебе"
     
  • 5.129, Аноним (-), 16:24, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > это называется академический интерес.

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

    Если дальше "академического интереса" вы не видите, то большинство уже реализованных инноваций остались вообще за пределами вашего восприятия.

     
  • 2.3, Аноним (-), 14:52, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +9 +/
    - Обучение программированию на go
    - минимальное рабочее окружение со статической линковкой
     
     
  • 3.4, Аноним (-), 14:54, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > - Обучение программированию на go
    > - минимальное рабочее окружение со статической линковкой

    каждый бинарь, реализующий однострочник на баше, по 90 мегабайт

     
     
  • 4.64, ОШИБКА Отсутствуют данные в поле Name (?), 21:44, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    qqqqqqqqqq gonix gonix build ll total 1 3M 4 0K drwxr-xr-x 2 anonimous anoni... большой текст свёрнут, показать
     
     
  • 5.113, Аноним (-), 18:00, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    1.3 Мб на 18 жалких утилиточек, которые делают дело по предельному минимуму? Это фейл.
     
     
  • 6.114, анон (?), 18:37, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Не позорь имя анона школота безродная Вот размеры бинарей на Ц из православной ... большой текст свёрнут, показать
     
     
  • 7.124, Fox Mulder (?), 12:30, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    лол невелика. минимум в 2-2.5 раза
     
     
  • 8.126, Аноним (-), 16:21, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Так для бешеной хипстоты в 3 раза - не крюк А для тех кого размер реально кол... текст свёрнут, показать
     
  • 7.143, Анонимоус (?), 14:56, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Попробуй strip сделать для этих файлов
     
  • 3.5, Аноним (-), 14:55, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +7 +/
    А что, на ld из GCC не умеет линковать статически? o_O    o_O    o_O   o_O
     
     
  • 4.59, Аноним (-), 21:15, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Умеет, но восторженные пионэры об этом не знают.
     
  • 4.94, Аноним (-), 09:56, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    В GCC нет ld.
     
  • 3.127, Аноним (-), 16:21, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > - минимальное рабочее окружение со статической линковкой

    И тут сишники вас обставили, сделав бизибокс...

     
  • 2.7, Crazy Alex (ok), 15:10, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Восторг неофитов, скорее всего. Если к существующей реализации претензий особых нет, поблем с лицензией нет - что это может ещё быть?
     
  • 2.13, Аноним (-), 15:29, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А Вы наверное и не первый и не второй?
     
  • 2.17, Аноним (-), 16:03, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >мне кто-нибудь из тех, кто пишет на С

    тоесть вы на си не пишите. А на чем пишите?
    >Go-недопрогаммистов неинтересно

    Тоесть они хуже вас? Почему если вы не пишите на Си?
    >нафига это нужно?

    Получить более стабильные утилиты засчет более современного языка, наверное.

     
     
  • 3.80, _KUL (ok), 02:57, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    C# с поддержкой своего core под линукс самый современный. Так пишите на нем, для апогея "стабильности", б.ять!
     
     
  • 4.107, Пингвино (ok), 16:58, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Откуда ты, такой буйный дауненок, взялся и что полезного ты сделал для сообщества?
     
     
  • 5.112, A.Stahl (ok), 17:39, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Может для начала сам представишься?
     
  • 4.116, Аноним (-), 20:35, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ты опять забыл принять таблетки.
     
  • 3.86, A.Stahl (ok), 08:46, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >вы на си не пишите

    Эй! Раскомандовался тут...

     
  • 3.88, Аноним (-), 08:52, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Получить более стабильные утилиты засчет более современного языка, наверное.

    А что, у coreutils есть какие-то проблемы со стабильностью?

     
     
  • 4.101, Аноним (-), 11:50, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще да. Например, гнутый cp при копировании 50 терабайт мелких файлов сжирает всю память и вешается.
     
     
  • 5.104, Аноним (-), 15:08, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > 50 терабайт мелких файлов

    o_O

     
  • 5.109, Пингвино (ok), 17:05, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Опять же проблемы при удалении папок с большим количеством файлов... Иногда это просто невозможно сделать с помощью rm
     
  • 5.111, None (??), 17:23, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну тут два варианта - утечка из-за ошибки в коде, либо разрастание кучи из-за дефекта в malloc/free, а может быть и сама ОС дурит, теряя по байтику при каждом open/close.
     
     
  • 6.120, Аноним (-), 23:40, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >Ну тут два варианта - утечка из-за ошибки в коде, либо разрастание кучи из-за дефекта в malloc/free, а может быть и сама ОС дурит, теряя по байтику при каждом open/close.

    Скорее, ошибка в ДНК разработчиков.

    >Reading the source code revealed that cp keeps track of which files

    have been copied in a hash table that now and then has to be resized to avoid
    too many collisions. When the RAM has been used up, this becomes a slow
    operation.

    https://lists.gnu.org/archive/html/coreutils/2014-08/msg00012.html

     
  • 5.128, Аноним (-), 16:23, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Вообще да. Например, гнутый cp при копировании 50 терабайт мелких файлов сжирает
    > всю память и вешается.

    А эту буиту на го вы уже проверили на этих тесткейсах? :)

     
  • 2.26, an (??), 17:18, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    если написать еще раз на си, могут не поставить зачет за курсовую работу - скажут плагиат. А так вполне может быть и зачет.

    а почему на Go недопрограмисты нопонятно. это же не питон :)

     
  • 2.38, all_glory_to_the_hypnotoad (ok), 18:55, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А сам как думаешь?

    > В настоящее время уже полностью готовы утилиты dirname, false, sleep, tee, true и yes,

    вот именно этот проект явно не нужен т.к. пишет его какая-то школота.

     
  • 2.84, Аноним (-), 07:34, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>Объясните мне кто-нибудь из тех, кто пишет на С

    А что ты хочешь от нас услышать? ИМХО, Just for Fun. Или может язык решили изучить и вместо "Hello World!" решили переписать все Unix утилиты?

     
  • 2.95, Аноним (-), 10:59, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А нафига ты нужен?
     
  • 2.108, L29Ah (?), 16:58, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Не нужно.
     

  • 1.6, Name. (?), 15:07, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А тот мегакостыль когда 32х битные программы на go не всегда запускались уже починили?
     
  • 1.8, bav (ok), 15:11, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Бгг. Это совсем какие-то школьники делают. dirname помечен как готовый, хотя не поддерживает нескольких аргументов и --zero.
     
     
  • 2.11, Crazy Alex (ok), 15:14, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Вот что-то подобное я вижу во всех этих свежеслепленных Go-проектах. Оно всё как-то работает, но "продуктом" эти софтины не назвать. Что закономерно, в общем-то, учитывая обычно желание показать, как "легко и просто" что-нибудь сделать на Go. Что ж, сюрприз - законченный продукт почти никогда не бывает легким и простым, и на само писание кода не так много усилий, как некоторым кажется.
     
     
  • 3.34, anonymous (??), 18:30, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > само писание кода не так много усилий, как некоторым кажется

    А вот это очень хорошие слова. Почему-то многие забывают, что процентов эдак 50% работы программиста -- это вдумчивое составление непротиворечивого дизайна. Реализация которого потом довольно быстро пишется на любом языке известном языке (ну, кроме фортрана).

     
     
  • 4.44, soarin (ok), 19:15, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Есть ещё составление документации - это тоже весьма скучно
     
  • 3.79, freehck (ok), 02:50, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Вот что-то подобное я вижу во всех этих свежеслепленных Go-проектах. Оно всё как-то работает, но "продуктом" эти софтины не назвать.

    Ну не знаю. Вот aptly, кажется, хоть и написан на Go, является весьма неплохой штукой. По крайней мере до сих пор я ничего лучше не нашёл для оперирования репозиториями и создания зеркал. Хотя там есть свои недочёты, но вполне готовым продуктом этот проект назвать можно.

    Правда, не очень я понимаю, как программисты на Go дебажат свои проекты. В gcc сообщения об ошибках были куда понятнее имхо.

     
     
  • 4.85, Аноним (-), 07:38, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё Docker написан на Go. Тоже хороший проект.
     
     
  • 5.99, Crazy Alex (ok), 11:45, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Насколько я понимаю, он заявлен как готовый к продакшну при том, что дыр в нём находят полно - это из той же серии, чрезмерная самоуверенность и попытки выкатить сырое.
     
  • 5.141, Клыкастый (ok), 16:09, 12/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    ты не путаешь полезный и хороший?
     
  • 4.90, Аноним (-), 08:57, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Правда, не очень я понимаю, как программисты на Go дебажат свои проекты.

    Так же как и питонисты - никак. Вываливают что есть, а дальше твои проблемы.

     
  • 4.100, Crazy Alex (ok), 11:49, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Я в выборе софта консервативен и нового пробую мало - за ненадобностью. Поэтому сужу по тому, что проскакивает в новостях. Недавно вот умильный тред насчёт VPN был, к примеру - с теми же проблемами. Докер дырявый, опять же - а он вроде как флагман софта, писанного на Go.
     
     
  • 5.117, freehck (ok), 20:59, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Я в выборе софта консервативен и нового пробую мало - за ненадобностью.

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

     
  • 3.130, Аноним (-), 16:26, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Что ж, сюрприз - законченный продукт почти никогда не
    > бывает легким и простым, и на само писание кода не так
    > много усилий, как некоторым кажется.

    Ну так сpaные рапидчики никак не могут понять что навозякать кнопки на форме и даже кой-как накидать какого-то кода - это еще не есть качественная и полезная программа. Это всего лишь их жалкие потуги. А что-то сверх того требует нефигово повъе, при том не только по части кодинга.

     
  • 2.66, Аноним (-), 21:59, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Они же клоны утилит UNIX пишут, а не утилит GNU. Стандарты POSIX не предусматривают нескольких путей и никаких опций: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/dirname.html
     
     
  • 3.77, bav (ok), 00:27, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Стандарты POSIX не предусматривают нескольких путей и никаких опций

    dirname был взят как первый попавшийся. Больше чем уверен, что с поддержкой посикса там так же ахово как и с GNU.

    Кстати, вот примеры из стандарта, которые эта поделка не проходит:

    .build/dirname //a//b// -> /
    .build/dirname /a/b/ -> /

    Ад и израиль. Зато посмотрите как мало кода!

    Если вспомнить про неприятие опций (в других утилитах) в виде -abc, а только -a -b -c, то о каком POSIX вообще идет речь? Автор сего поделия просто тупое школоло.

     
     
  • 4.89, Аноним (-), 08:55, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Ад и израиль. Зато посмотрите как мало кода!

    А когда они допишут до состояния "не хуже coreutils" - они узнают почему там столько кода и почему это столько писали.

     
     
  • 5.115, Аноним (-), 20:16, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не допишут, пионэры не могут в длительные разработки.
     

  • 1.9, Crazy Alex (ok), 15:12, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Кстати, "examples are tests" - уже года три как норма в D-сообществе.
     
     
  • 2.45, Аноним (-), 19:30, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    С этих убогих вообще взять нечего.
     
     
  • 3.58, Crazy Alex (ok), 21:14, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    "Эти" занимаются своими делами и не пытаются всё и вся переписать. И лично мне результат их работы нравится - по мощи язык покруче плюсов, а острых углов на порядок меньше. То, что за ними нет гугла или кого-то подобного - отдельный разговор.

    А вообще - я имел в виду, что "тесты = примеры" - отннудь не изобретение гошников.

     
     
  • 4.102, Аноним (-), 13:27, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А это нигде и не утверждалось.
     

  • 1.10, bav (ok), 15:13, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    А это вообще эпично:

    >  I used "flag" to do the flag-parsing, it is a little strict (ie. no combining flags like -xyz instead of -x -y -z).

    Совместимость? Не, не слышал.

     
  • 1.12, Crazy Alex (ok), 15:16, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мда, поветрие как оно есть. Последний раз я такое видел, когда на Ruby всё писать пытались.
     
  • 1.15, Аноним (-), 15:39, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Just for fun, вот только история показывает что проблем от такого фана потом будут горы.
     
  • 1.18, Аноним (-), 16:12, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А программы на Го могут обращаться к общей библиотеке? Мне просто интересно, как они будут одинаковый функционал делать? А если в нем будут исправления, будут все утилиты перекомпилировать?
     
     
  • 2.78, noname.htm (?), 02:43, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    gccgo по умолчанию делает динамическую линковку, на сколько я знаю. А вообще да - пересобирать. Но это не долго.
     
  • 2.98, Аноним (-), 11:43, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    dlopen() дергают.
     

  • 1.19, Аноним (-), 16:40, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >basename
    >cat
    >echo
    >pwd
    >tail
    >работоспособны с некоторыми ограничениями

    Специально скачаю, чтобы посмотреть на pwd и echo с "некоторыми ограничениями".

    >Предстоит реализовать bc, dc, ed, ls, more и rm.

    Че-то ржу.

     
     
  • 2.51, Аноним (-), 20:12, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Специально скачаю, чтобы посмотреть на pwd и echo с "некоторыми ограничениями".

    я и без скачиваний предполагаю что этот ихний echo небось не умеет печатать фразы начинающиеся на знак минус. (обычный echo умеет)

     
     
  • 3.118, BratSinot (ok), 20:59, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/polegone/gonix/blob/master/echo.go

    Даже человеку незнакомому с Go видно, что никаких getopts (в Go похожая система flags) не используется и проверок на "invalid argument" нет.

     
  • 2.92, Аноним (-), 09:01, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Специально скачаю, чтобы посмотреть на pwd

    Чтобы понять объем залета, надо вспомнить что в большинстве ФС в *никс файлы и диры могут содержать в названиях любые байты кроме 0x0 (конец строки в Си) и "/".

    А теперь представь себе что ты хочешь распечатать на экран путь содержащий полный ассортимент байтов кроме этих двух. Желательно чтобы как минимум терминал потом не очень перекашивало :)))

     

  • 1.20, Аноним (-), 16:44, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    хеллоуворд какой-то, если в исходники посмотреть. автор сам запостил новость на опеннет?
     
  • 1.21, Аноним (-), 16:46, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Да хватит сюда тащить проекты про которые даже автор пишет что это для обучения, фана и больше никуда не пойдет
     
  • 1.22, soarin (ok), 17:01, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    ужас, зачем эти hello worldы, без обработки различных ситуаций, с минимальнейшим функционалом по сравнению с аналогами, сюда надо было тащить?
     
  • 1.24, soarin (ok), 17:07, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Также можно отметить проект Godoc

    А это тут причём вообще?

     
  • 1.25, soarin (ok), 17:15, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    echo:
    for i := 1; i < len(os.Args); i++ { fmt.Printf("%s ", os.Args[i]) }

    В конце лишний пробл добавится в итоге. Это нормально?

     
     
  • 2.27, Аноним (-), 17:34, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Вот еще фееричная вещь из реализации yes:
    for i := 1; i < len(os.Args); i++
     
     
  • 3.28, Аноним (-), 17:37, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Дурачку невдомёк, что os.Args[0] это имя исполняемого файла? Тогда чего он лезет судить других людей?
     
     
  • 4.29, Аноним (-), 17:40, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Nope. Это умнику невдомек, что функция len будет вызываться при каждой итерации.
     
     
  • 5.32, Аноним. (?), 18:22, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пруф? Думаю, компилятор в состоянии это соптемизировать. К примеру gcc могет соптемизировать for(int i = a; a < b; ++i)
    ++N;
    До N = b - a - 1. В контексте задачи нахождения количества чисел от а до b (видел где-то такое чудо решение на просторах интернетов).
     
     
  • 6.37, soarin (ok), 18:50, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    дурацкий пример, ибо весьма простой, а вот как раз компилятор вряд ли станет оптимизировать вызовы функций (раньше по крайней мере на это не были способны), потому что функция само по себе по мимо возврата результат числа через стек может делать другую работу типа записи в файл и т.д. и т.п
     
  • 6.39, Аноним (-), 18:58, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Пруф чего? Если длина строки заранее неизвестна, то каким образом компилятор сможет оптимизировать вызов функции внутри оператора for? Вынести len за пределы цикла, изменяя тем самым семантику программы, что для любого уважающего себя компилятора моветон? А если длина строки изменится внутри цикла, что тогда?

    Вот простой пример того, что GCC с флагом -O3 бессилен в таких случаях. В ассемблерном листинге четко виден вызов strlen внутри цикла.

     
     
  • 7.42, soarin (ok), 19:06, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А если длина строки изменится внутри цикла, что тогда?

    На самом деле код есть априори и из него понятно что строка константная, тоесть так можно сделать.
    Но да, для компилятора - это слишком круто. А поколение, выбирающие пепСИ и го, без знания ассемблера и принципов компилятора, это не знает - есть такое.

     
  • 7.57, Аноним (-), 21:13, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Это потому что gcc не имеет права инлайнить strlen, а не имеет он его потому, что сишный рантайм общий на всю систему. А б-гомерзкий MSVC такой инлайн прекрасно делает и на -O0, а на -O3 вычисляет длину argv[i] один раз, а не каждый раз в цикле.
     
     
  • 8.61, Аноним (-), 21:18, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    То есть, у тебя компилятор вычисляет длину передаваемого в рантайме аргумента ещ... текст свёрнут, показать
     
     
  • 9.110, Пингвино (ok), 17:14, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ты дурачок Компилятор оптимизирует код так, чтобы в рантайме значение вычисляло... текст свёрнут, показать
     
  • 8.63, Аноним (-), 21:30, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Хотя, кажется я понял, что ты имеешь в виду Но все равно, при чем тут инлайн Е... текст свёрнут, показать
     
     
  • 9.68, Аноним (-), 22:09, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    У него есть argc А если серьезно, то и с длиной динамического массива такой ... текст свёрнут, показать
     
  • 9.69, Аноним (-), 22:14, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    И вообще, os Args 8212 это не динамический массив Он статический ... текст свёрнут, показать
     
     
  • 10.74, Аноним (-), 22:41, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    os Args - слайс в терминологии Go, то есть вполне себе динамический массив... текст свёрнут, показать
     
     
  • 11.76, Аноним (-), 23:32, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, он string И слайсы не могут вырасти больше чем capacity, а capacity неиз... текст свёрнут, показать
     
     
  • 12.103, Аноним (-), 13:29, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А как еще могут работать динамические массивы ... текст свёрнут, показать
     
  • 8.82, Алексей Морозов (ok), 05:54, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    -D__USE_STRING_INLINES, после чего включается машинерия в usr include bits stri... текст свёрнут, показать
     
  • 6.40, Аноним (-), 18:59, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Забыл пример.
    http://pastebin.com/wZKuu00q
     
  • 6.83, Аноним (-), 07:07, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Оптимизоровать можно только детерминированные ф-ции, т.е. результат которых зависит ислючительно от аргументов. В Го есть механизм указания детерминированности?
     
  • 6.93, Аноним (-), 09:08, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Go пники оказывается надеются что за них оптемизирует компилер А то и вовсе ... большой текст свёрнут, показать
     
     
  • 7.140, Аноним (-), 12:55, 12/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >В случае вызова функции проблема в том что оптимизатор должен быть чуть ли не AI чтобы понять что она всегда возвращает одно и то же.

    AI не нужен. Можно определить детерменированную функцию как только такую, в которой для вычисления результата используются только детерменированные операции в своем теле (+ - * и т.п.) и вызовы других детерменированных функций и не имеет никаких других операций и вызовов.
    Результат такой функции будет зависит исключительно от ее аргументов и не иметь побочных эффектов.

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

    Я просто не знаю может ли так Го.

     
  • 5.55, Аноним (-), 21:10, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    это вам невдомек, что иногда лучше жевать. В го функция len работает за константу.

    Эксперты opennet в очередной раз расписались в своей полной некомпетентности))

     
     
  • 6.62, Аноним (-), 21:21, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Да уж, тяжелая судьбинушка у этой функции. Ничего не скажешь.
    А если ей передать в качестве аргумента динамический массив, то она тоже "за константу сработает"?
     
     
  • 7.65, Аноним (-), 21:51, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Представь себе.
     
     
  • 8.67, Аноним (-), 22:02, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ясно А теперь, пожалуйста, компетентно поясните какой смысл Вы вкладываете во ... текст свёрнут, показать
     
     
  • 9.72, Аноним (-), 22:28, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я не тот аноним, но факт в том, динамические массивы в Го содержат длину как п... текст свёрнут, показать
     
  • 9.73, Аноним (-), 22:32, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    курите маны http blog golang org go-slices-usage-and-internals ... текст свёрнут, показать
     
  • 7.70, Аноним (-), 22:15, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Да уж, тяжелая судьбинушка у этой функции. Ничего не скажешь.
    > А если ей передать в качестве аргумента динамический массив, то она тоже
    > "за константу сработает"?

    В го массивы статические.

     
     
  • 8.96, Аноним (-), 11:24, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А где тогда динамические ... текст свёрнут, показать
     
     
  • 9.119, BratSinot (ok), 21:02, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    В рамках проекта gonix, развивается реализация unix-утилит н...... текст свёрнут, показать
     
  • 5.81, freehck (ok), 03:00, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Nope. Это умнику невдомек, что функция len будет вызываться при каждой итерации.

    А вот макрос loop в Common Lisp такие ситуации умеет обрабатывать. И код становится очень даже приятно читаем. =)

     

  • 1.31, Anonymus (?), 18:20, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Дежавю. На каком-то языке, по моде этак 5-летней давности, уже пытались эти утилиты переписывать. Ниасилили. Похоже, го тоже ничего не светит.
     
  • 1.33, Аноним (-), 18:25, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    в конце концов есть же perl power tools
     
  • 1.43, vitalif (ok), 19:10, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А это. Оно динамическую сборку делать научилось? Или там каждый ls весит 10 мегов?
     
     
  • 2.60, Аноним (-), 21:18, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    для динамической линковки есть gccgo
     

  • 1.48, Аноним (-), 20:08, 09/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надеюсь, они использовали OO возможности языка, а иначе не имеет смысла.
     
     
  • 2.53, Аноним (-), 20:27, 09/05/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Это в любом случае не имеет смысла.
     

  • 1.87, Ydro (?), 08:47, 10/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я бы ещё понял, если бы true и false написали на чистом ассемблере, хотя с нынешними оптимизациями для Си смысла нет. Ждём реализацию данных утилит на JavaScript собранных в один файл под NW.js
     
     
  • 2.122, Ordu (ok), 07:45, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    На x86 бинари для true и false можно впихнуть в 45 байт. Если писать на ассемблере. Подробности можно почитать, например, тут: http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
    Насчёт всего остального, типа cat -- не скажу, не интересовался. Полагаю результат будет резко хуже, особенно если разбирать аргументы командной строки, обрабатывать все разнообразные вероятные и невероятные ошибки сисколлов и проч. Но если говорить про true и false, то на асме можно выжать эффективность, которая переходит все рамки бессмысленности. Компиляторы так не умеют.
     
  • 2.131, Аноним (-), 16:30, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Я бы ещё понял, если бы true и false написали на чистом ассемблере

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

     

  • 1.97, Аноним (-), 11:30, 10/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    >

    polegone 1 day ago

    I'm just doing this for fun and to learn about Go and Unix at the same time.
    I am a beginner, and a lot of my code is inefficient and/or incomplete, but by putting it on the Internet I can get criticism and find out where I went wrong.
    For instance, some of you have told me that the way I've been reading files is very inefficient, so now I'll try and do it the correct way.

    <--  слова автора в оригинальном топике на HN: https://news.ycombinator.com/item?id=9514818. А заголовок как будто сами GNU решили все на Go переписать. Там в этом же топике еще куча таких проектов.

     
     
  • 2.105, Аноним (-), 15:24, 10/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    да вообще забавно наблюдать, как из-за этого наколенного проектика тут у многих начало бомбить :) Нинужно! Оно нисоответствует стандарту ПОСИКС!

    в который раз убеждаюсь, что о популярности чего-то (в данном случае - Go) лучше всего судить по числу хейтеров))

     
     
  • 3.123, iPony (?), 10:45, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Претензии тут не к автору проекта. Да, код весьма плох - но, автор четко писал, что просто для обучения. Претензии к автору-дегенерату новости, что он откопал это и принес сюда.

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

     
     
  • 4.138, Аноним (-), 06:40, 12/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    проблема в том, что смеющиеся сами ни черта не понимают в теме. И выглядят убого тут в первую очередь они, а вовсе не авторы проекта и новости.
     

  • 1.121, Илья (??), 03:40, 11/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для ознакомления с языком - самое то
     
     
  • 2.132, Аноним (-), 16:31, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Для ознакомления с языком - самое то

    А нам зачем об этом новости читать? Давай я накорябую сюда новость про то как я учился в турбо-пасквиле рисовать через egavga.bgi? :)

     
     
  • 3.134, Kodir (ok), 18:36, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    О! Братья-олдфаги подтянулись! :) Помню-помню, балет на костылях с насаженными роликами, 640x480, всё страшное, но работает как молния. BGI-шки были для разных режимов и их нужно было загружать.
    А потом пришёл Си и всё опошлил!
     
     
  • 4.136, йцу (?), 03:05, 12/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >BGI-шки были для разных

    режимов и их нужно было загружать. А потом пришёл Си и всё опошлил!

    Да ладно, в борланд ц++ для дос были те же бги.

     

  • 1.133, Kodir (ok), 18:34, 11/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Школозадое дубьё из Гугла, "отобранные лучшие из лучших", хорошо умеют решать задачи про люки, но вот в реальной жизни лажают как олимпиадники - нет ни профессионального чутья, ни опыта, ни глубоких _программерских_ знаний.

    По-моему, все эти затеи - жалкая попытка гугла быть "кем-то" помимо поисковика. Пока получается хреново - запилили язычок, достойный дипломника, а теперь, почти без вливаний, хотят чтобы все на него прыгнули только из-за лэйбла "googled in google" - ЩАЗ! :)

    А по поводу полезности проекта, сразу "НЕ НУЖНО". Линуксы/БЗДи и так ПРЕКРАСНО поживают на уже написанных вещах, "тут саму консерваторию менять надо!" (ц)
    Сипипи как язык - конечно левая "бомба", его менять нужно, но просто переписать ls на Go/D/Rust и т.п. - глупо, мир "текстовых потоков, входящих и выходящих из программ" умер с первым Жыпег-файлом, миру нужна принципиально новая концепция вместо заскорузлого POSIX.

     
     
  • 2.135, Аноним (-), 22:23, 11/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    POSIX, может, и заскорузлый, но нужно ли миру очередное "принципиально новое" без обратной совместимости - большой вопрос. На одной чаше весов - "принципиально новое", на другой - тонны рабочего и отлаженного софта, который вряд ли кто-то кинется переписывать.
     
  • 2.137, Аноним (-), 06:34, 12/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >запилили язычок, достойный дипломника

    скажете это в лицо Тейлору, Чейни, Пайку, Кернигану, и кто там еще из авторов?))

     

  • 1.139, имя (?), 11:37, 12/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Их ржавые друзья опередили на целый год: http://www.opennet.me/opennews/art.shtml?num=39989
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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