LINUX.ORG.RU

Вопрос по Go

 ,


0

1
package main

import "fmt"

func main() {
    pow := make([]int, 10)
    for i := range pow {
        pow[i] = 1 << uint(i)
    }
    for _, value := range pow {
        fmt.Printf("%d\n", value)
    }
}

Не пойму ни как, как это работает? Обьясните пожалуйста.

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

Не обязательно новое. Что-нибудь, что отличало бы Go от других языков в положительную сторону, а не отрицательную(бедность возможностей, отсутствие поддержки динамической линковки, низкая(по сравнению с C/C++) производительность, плохопредсказуемый расход памяти, отсутствие возможностей управления памятью на разных уровнях(по сравнению с C/C++), зашитое в язык и плохо кастомизируемое CSP и пр. и пр.). Размер кода сократился вдвое... Это мало. Кстати, переписывая старые проекты с C++ на него же, я получал и больший выигрыш в объеме кода. Так что вообще ни о чем.

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

Тем, что в языке нет более 9000 граблей, на которых можно наступить? Тем, что язык настолько прост, что его несложно можно изучить полностью? Тем, что все необходимые фичи собраны вместе и работают сообща, так что не требуется строить замок костылей ради одной только сборки мусора?
Как язык, в котором было всё подряд, на самом деле, уже был ПЛ/1, а в си же не появилось ничего нового.

quantum-troll ★★★★★
()
Ответ на: комментарий от forCe

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

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

Как раз работал. Кстати, крупные вещи вообще не переписывают, ибо нет никакого смысла.

Не можете ответить, как и прочие сторонники Go по всем интернетам, как нашим, так и нет.

Моя позиция проста - покажите, чем хорош этот инструмент. Я с удовольствием буду пользоваться полезным инструментом.

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

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

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

Как я понял, тут говорят о замене C и C++?

Я этого не увидел.

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

Серверсайд, кооторый сейчас делается на Python, Ruby, JS и, в меньшей степени, Java. Динамические языки обходит за счет быстродействия и нормальной статической типизации, Java - за счет упрощенной платформы и лучших (?) средств паралеллизации.

Но сам язык УГ, да.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от forCe

Моя позиция проста - покажите, чем хорош этот инструмент. Я с удовольствием буду пользоваться полезным инструментом.

Да всем по..., чем вы будете пользоваться. Не нравится - давай, до свидания!

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

язык со встроенным csp

по синтаксису текоторый возрват (не во всём) от С к Алголу(с вкраплениями частностей знакомых публике через питон).

хороший язык , но чиста меркантильно рано его осваивать.

тока если энтузиаст и хош на нём свои проекты , либо если тебе плотют за него.

а так язык приятный(есть некоторые шероховатости, ну а у каких распространёных языков их нет?!)

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

1. число пользователей(промышленых) растёт.

2. средний уровень оплаты golang-интересантов выше чем по отрасли.

3. golang включён в качестве языка программирования в некоторых учебных заведениях( то биш постепено и с этой стороны идёт проникновение).

если гугля не за фэйлит то через 3-4 года golang будет в позиции мэйнстримного языка для серверного бэкэнда наряду с питоном(джанга), php(анафема), js(node.js) - можно надеятся за их счёт доля golang подрастёт.

в части системного golang на многоголовых армах вполно .

qulinxao ★★☆
()

Го не нужен. Шарп или д чем не устроили?

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

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

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

для singleCPU есть С и его «огрызки»

т.е для golang спецом заточен на «сопрограмность» или лучше конкурентность утилизирующию апаратные возможности по «одновременному» исполнению на разных ядрах/узлах.

т.е ожидается , что по мере увеличения числа ядер на узлах golang будет усиливать преимущество использования конкурентности.

ps. обрати внимание не распаралеленость ,а конкурентность (представь сеть петри - golang позволяет двигать сразу несколько фишек которые можно двинуть , в отличии от 1 за раз в чисто последовательных моделях исполнения).

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

язык со встроенным csp

Почему это не часть стандартной библиотеки? Почему нельзя кастомизировать пулы тредов, шедулер, распределение памяти и пр. и пр.?

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

Серверсайд, кооторый сейчас делается на Python, Ruby, JS

Кстати да, я применял его вместо питона для утилит и небольших демонов. Вполне сносно. Другое дело, что на питоне все-равно быстрее и проще. Подозреваю, что так же будет и с Ruby. Java... ХЗ кто перейдет с Java на ЭТО. Они на scala-то переходят медленно-медленно и далеко не во всем.

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

golang включён в качестве языка программирования в некоторых учебных заведениях

Можно подробнее? Обычно в учебные программы не включают новые экспериментальные языки.

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

Почему это не часть стандартной библиотеки?

А как ты себе это представляешь? В кложуре такое возможно, потому что там есть макросы. А в го макросов нет, такую фичу на уровне библиотеки не ввести.

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

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

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

В чем проблема? В отсутствии скобочек для параметров go? Или лямбду в случае чего лень будет написать?

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

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

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

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

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

Как минимум на блокирующих операциях ввода-вывода тоже. Но даже если так, то в языке должны быть весьма низкоуровневые средства по контролю control flow, чтобы такое реализовать на уровне библиотеки, а не языка.

PolarFox ★★★★★
()
Последнее исправление: PolarFox (всего исправлений: 1)
Ответ на: комментарий от forCe

Как я понял, там CSP + пул тредов

Хоаровское CSP - это взаимодействие Ъ-параллельных процессов. В Go - эрзац в виде «горутин». CSP было в Occam.

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

А как в Plan 9's C это реализовано? Т.е. я читал, что там С несколько измененный по сравнению со стандартом, но касаются ли эти изменения поддержки конкурентности, не помню.

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

Не думаю что в plan9 какой-либо нестандартный си, учитывая их к нему любовь.

http://doc.cat-v.org/plan_9/4th_edition/papers/compiler

Хотя возможно те расширения уже не актуальны в сравнении с последним стандартом.

korvin_ ★★★★★
()
Последнее исправление: korvin_ (всего исправлений: 1)
Ответ на: комментарий от tailgunner

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

Вот вроде как даже Пайк удивлялся, что сишники и плюсовики к нему не идут... Так потому и не идут, что эти языки берут для кастомизации, как в процессе создания, так и для последующих изменений, куча встроенных «правильных» и плохонастраиваемых вещей(а для плюсовиков еще и отсутствие возможностей - ООП, шаблонов и пр.) не помогут привлечь пользователей этих инструментов.

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

Хоаровское CSP - это взаимодействие Ъ-параллельных процессов. В Go - эрзац в виде «горутин». CSP было в Occam.

Так ли это принципиально?

Не знаю. У Хоара поверх этого навернута математика, и остатся ли она валидной в таком случае - ХЗ.

Помнится, раньше ты не предавал этому большого значения. =)

Ммм... какие именно мои слова в этом посте ты имеешь в виду?

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

Тем не менее, базируется на CSP и выглядит как CSP

Да, очень похоже.

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

Не понимаю, почему ты уперся в планировщик. Сделать каналы на уровне библиотеки в Go совершенно невозможно по простой причине: нет параметризуемых типов. Поэтому каналы (по сути, параметризуемые типы) должны быть встроены непосредственно в язык. Кроме того, в Go нет средств расширения синтаксиса и определения своих операторов, так что специальный синтаксис для горутин и каналов на уровне библиотеки сделать тоже невозможно.

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

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

Ммм... какие именно мои слова в этом посте ты имеешь в виду?

Я про разницу конкурентности и «Ъ-параллельности».

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

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

theNamelessOne ★★★★★
()
16 ноября 2015 г.
Ответ на: комментарий от quantum-troll

Простой

С логикой в комментариях

без множества лишних вещей

Например, параметрического полиморфизма или вообще какого либо способа писать универсальный код без interface{}, да

в которое rust до сих пор не может

Зато он может в параметрический полиморфизм и вообще он не для быстрого написания говнокода в стиле PHP, как Go, а больше как замена С с более безопасным управлением памятью

базовым выводом типов

Который любой школьник способен написать

некоторыми базовыми типами (массивы, срезы, каналы, словари)

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

неплохой стандартной библиотекой

В которой некоторые вещи делаются так, что код на С в десятки раз читабельнее, что уж говорить про более высокоуровневые языки

интерфейсами

Ага, весь код interface{} пестрит

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

Ну у тех, с кем я это обсуждал, Go никакого энтузиазма не вызывал. С этим товарищем не знаком, сказать ничего не могу.

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

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

anonymous
()

общее количество 10, начинается с 1, умножается на 2. выводиться значение, и это это значение умножается на 2. то есть 1*2=2: 2*2=4: 4*2=8 и так далее. Наверное

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