LINUX.ORG.RU

Сейчас придёт полярный лис и расскажет тебе про concurrent.

aedeph_ ★★
()

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

В основном, конечно, рассчитан на системное программирование, и во многом похож на си. Эдакий гибрид си и питона (в хорошем смысле).

anonymous
()
Ответ на: комментарий от anonymous

Раньше, помню, писали, что после компиляции получаются огромного размера файлы - как с этим теперь дела обстоят?

kovrik ★★★★★
()
Ответ на: комментарий от kovrik

Раньше, помню, писали, что после компиляции получаются огромного размера файлы - как с этим теперь дела обстоят?

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

RedPossum ★★★★★
()
Ответ на: комментарий от RedPossum

А я его всегда воспринимал как аналог Руби/Питона...

kovrik ★★★★★
()
Ответ на: комментарий от Bad_ptr

хватит бредить.

там есть авторасстановка ";", так что можно код отступами форматировать.

true_admin ★★★★★
()
Ответ на: комментарий от Bad_ptr

хватит бредить.

Нужен, как замена(попытка) сей, в какой-то мере(в какой =) ).

Питона в плане лёгкости написания кода. Кроме того, есть относительно жесткие правила форматирования (вроде обязательных скобок у if-ов и расстановки точек с запятой), что тоже чем-то напоминает питон.

Нужен, как замена(попытка) сей, в какой-то мере(в какой =) ).

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

anonymous
()
Ответ на: комментарий от kovrik

Просто я сейчас немного заинтересовался сетевым программированием. Нужно что-то типа C++ но со сборщиком. Тут напоролся на Go, но что-то отзывы о нем не очень, как ситуация сейчас - тоже не ясно. Кто это использует, надо ли вообще, что хорошего или плохого.

stonedmind
() автор топика
Ответ на: комментарий от kovrik

Та знаю, но не симпатизирует вообще, пока-что во всяком случае.

stonedmind
() автор топика
Ответ на: комментарий от anonymous

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

Слышали мы подобные рекламки от D. Здесь тоже очередная версия Go будет не совместима с предыдущей и стабилизироваться шесть лет?

metar ★★★
()
Ответ на: комментарий от kovrik

Java же

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

anonymous
()
Ответ на: комментарий от anonymous

Да, для меня JVM - страшная штука. Если не будет аналогов, наверное поковыряю C и C++. На что-то серьезное меня не хватит конечно, ради интереса разве.

stonedmind
() автор топика
Ответ на: комментарий от anonymous

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

kovrik ★★★★★
()
Ответ на: комментарий от stonedmind

А что в ней страшного?
Я не говорю, что Java идеальна - минусов, конечно, хватает. Но, ИМХО, для твоих требований - самое оно.

kovrik ★★★★★
()
Ответ на: комментарий от metar

Слышали мы подобные рекламки от D. Здесь тоже очередная версия Go будет не совместима с предыдущей и стабилизироваться шесть лет?

После выхода Go 1 со стабильностью стало всё более-менее нормально. Некоторые вещи в языке выглядят не очень выразительно, но, судя по всему, для задач, которые ставились, он уже готов. И больше его ломать не хотят, так как планов «захватить мир программирования во всех сферах» не ставится.

Проектировали язык, кстати, довольно солидные люди, вроде Роба Пайка и Кена Томпсона, так что никаких критических просчётов всё же не ожидается. Это вам не питон, где сначала наделали нелогичных print expression, а потом, к третьей версии, решили всё поломать для восстановления красоты.

anonymous
()
Ответ на: комментарий от kovrik

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

Язык очень молодой, стабильная версия вышла недавно. До этого, естественно, рассчитывать на него не стоило вообще. Сейчас всё выглядит приличнее. За языком стоит гугль, который, несмотря на все его недостатки, всё же солиден, и помереть так просто не даст. Как минимум гугловцы говорили, что у них там на go написан «real stuff».

Вот небольшой список юзеров: http://go-lang.cat-v.org/organizations-using-go

ынтырпрайзный

Естественно, закладывать какой-то сверхтолстый ынтерпрайзный проект на него не стоит, если ты, конечно, не являешься гуглом с его ресурсами. Но для чего-то среднего, имхо, вполне подойдёт. Хотя, конечно, надо учитывать, что язык новый, малоизвестный, и толпу кодеров со знаниями его найти будет непросто.

anonymous
()
Ответ на: комментарий от anonymous

Да, гугл - солидная штука и все такое, но они вон и ЯП Dart пиарили - помер, Google Wave - помер, Google Plus - одной ногой в могиле...Не получилось бы с Go такой же фигни.

kovrik ★★★★★
()

Любопытная замена C++. К сожалению все существующие на сегодняшний день реализации просто говно или тормозное говно.

KblCb ★★★★★
()
Ответ на: комментарий от kovrik

Конечно огромного размера, он по дефолту все-все статически линкует.

Feel The Difference:

$ go build main.go
$ du -sh main
3.4M	main
$ ldd main
	linux-vdso.so.1 =>  (0x00007fff0bbff000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f64cae6e000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f64caae7000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f64cb09c000)
$ go build -compiler gccgo ./main.go
$ du -sh main
304K	main
$ ldd main
	linux-vdso.so.1 =>  (0x00007fffbffff000)
	libgo.so.0 => /usr/lib/x86_64-linux-gnu/libgo.so.0 (0x00007f6d85cdc000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f6d85ac0000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6d8583d000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6d85627000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6d852a0000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f6d889da000)

По теме: переписал на нем с пяток поделок для своего пользования (с питона и цпп), и xmpp-бота для ссылки в профиле.

Вполне доволен, волосы cтали мягкими и шелковистыми.

cx ★★
()
Ответ на: комментарий от kovrik

Да, гугл - солидная штука и все такое, но они вон и ЯП Dart пиарили - помер,

Дарт не помер. Он просто не нужен изначально, так как нельзя выдумывать новый язык для браузеров, не заручившись поддержкой производителей браузеров. В результате мы имеем приличный язык, который либо работает в приличной VM, но только в хроме, либо транслируется в неприличный и большой js, но везде. Этот фейл, имхо, видно изначально при создании языка. Go от этого свободен, так как для него вопросы браузеров не важны. Кроссплатформенность у языка вполне нормальная.

Google Wave - помер

Это да, тут ничего не скажу.

Google Plus - одной ногой в могиле

Очень вряд ли. Свою пользовательскую базу они набрали, людей там достаточно. Естественно, это не фейсбук, но побить фейсбук на его поле нереально. Просто потому, что никто не пойдёт в другую соцсеть, если туда не перейдут все друзья. А все друзья не перейдут, потому что их друзья... и так далее. То, что гугл+ ещё жив, как раз доказывает, что проект хоть чего-то смог добиться. Закрывать его из-за того, что он не стал круче фейсбука, может только не понимающий вышеперечисленного псих:)

Не получилось бы с Go такой же фигни.

Тут, увы, только время покажет.

anonymous
()
Ответ на: комментарий от cx

Конечно огромного размера, он по дефолту все-все статически линкует.

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

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

anonymous
()
Ответ на: комментарий от anonymous

UPD: да, есть gccgo, конечно, но это немного не то. Пока ещё не до конца стабильная штука, и полуофициальная.

anonymous
()
Ответ на: комментарий от anonymous

Когда рантайм будет влезать в хотя бы мегабайт - посмотрим, а так пока только C, только хардкор.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от anonymous

Более того, он не только по дефолту так линкует, он вообще только так и умеет:)

а стрипнуть лишнее никак нельзя?

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

а стрипнуть лишнее никак нельзя?

Вроде можно, но конкретно исполняемые бинарники выходят относительно толстыми. А вот библиотеки довольно компактны.

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

anonymous
()
Ответ на: комментарий от stonedmind

Нужно что-то типа C++ но со сборщиком

используй shared_ptr.

nanoolinux ★★★★
()
Ответ на: комментарий от kovrik

А что в ней страшного?

Тормозит, жрет кучу памяти, TCO на ней — отдельная песня. И это я еще люблю JVM :)

ТСу: Go вырос из всяких Limbo и Alef, которые в своей среде были довольно православными. Да и вообще, пусть будет, что за желание закапывать языки? :)

buddhist ★★★★★
()

зачем и кому нужен Go от гугла? Есть идеи?

Мне кажется, что он зачем-то нужен Google'у.

KRoN73 ★★★★★
()
Ответ на: комментарий от d9d9

Это вывод типов. Простое присваивание - '=', сравнение - '=='

Можешь вообще := не юзать, раз так страшно :)

cx ★★
()
Ответ на: комментарий от d9d9

Нормально как по мне, боюсь что := - такая нотация оператора далеко не самая большая проблема этого инструмента. Темболее, что это вывод типа, как указал cx

stonedmind
() автор топика
Ответ на: комментарий от cx

Это вывод типов

Вывод типов?

Это комбинация объявления и присваивания в одной команде, с автоматическим определением типа компилятором.

anonymous
()
Ответ на: комментарий от anonymous

с автоматическим определением типа компилятором.

Вывод типов и есть. Ну, присваивание с выводом типа, если хочешь. То что оно там еще и объявляет заодно - мелкие детали реализации основной идеи.

Так можно вместо общепринятого названия писать по портянке на каждую фичу.

cx ★★
()
Ответ на: комментарий от qrck

А чем С++ совместно с shared_ptr/weak_ptr не торт?

У С++ много других проблем, и главная (для меня) — нечитаемость. С++ впитал в себя слишком много парадигм, пытаясь их уместить в узкие рамки Си-подобного синтаксиса. Я ничего не говорю плохого про Си, наоборот, но кесарю кесарево — синтаксис Си идеален для «explicit» стиля, когда ООП или управление памятью не прячется за какими-то доп. костылями.

А С++ попытался «упростить» вещи, и в итоге мы получили нечитаемый ужас вроде:

      template<typename _Tp, typename... _Args>
        static typename
        enable_if<!__construct_helper<_Tp, _Args...>::value, void>::type
        _S_construct(_Alloc&, _Tp* __p, _Args&&... __args)
        { ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); }

(Посчитайте сколько тут синтаксических конструкций поверх чистого Си.)

Go пытается быть правильным языком «среднего уровня», занять нишу C++. Успехов ему, конечно, но, кажется, он опоздал. Сейчас скорее идет дальнейшее разделение на низкий и высокий уровень, место «среднему» не остается. На низком уровне как был Си так и остался, а высокий за языками вроде Ruby, Python (к сожалению), JS.

Хотя, одну нишу для Go я всё еще вижу — это native игры. Хотя есть подозрения, что даже в играх никто с С++ уходить не будет. Но я рад ошибиться. :)

hexdump01010101
()
Ответ на: комментарий от hexdump01010101

Хотя, одну нишу для Go я всё еще вижу — это native игры.

Пока в GC mark-and-sweep вряд ли кто-нибудь будет использовать Go для 3d.

Anatolik ★★
()
Ответ на: комментарий от Anatolik

Пока в GC mark-and-sweep вряд ли кто-нибудь будет использовать Go для 3d.

А GC в Go можно вообще отключить, насколько я знаю. Собственно, тогда он становится просто «С++ с более вменяемым синтаксисом».

hexdump01010101
()
Ответ на: комментарий от Anatolik

А GC в Go можно вообще отключить, насколько я знаю.

К сожалению, нет — нельзя.

Хотел было уже написать «тогда закапывайте»... но есть ли шансы на исправление GC?.. Если нет, тогда дверь игр для Go закрыта, и я даже не знаю, куда бы его можно было впихнуть...

hexdump01010101
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.