Автор Тема: Язык программирования Go  (Прочитано 19152 раз)

DIzer

  • Гость
Re: Язык программирования Go
« Ответ #15 : Апрель 09, 2012, 01:55:00 pm »
Проект go1 рассчитан на веб?
так в ГО же статическая компиляция...
Концепция проекта в ide -моделирует его окружение (структуру) -в тех областях для которых ЯП спроектирован (так как воспринимают эти области создатели ide) -  а Go планировался производительная альтернатива  PHP,Ruby,Python... ну и СИ++  для некоторых видов серверных приложений -разве нет  ;) ?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #16 : Апрель 09, 2012, 02:21:15 pm »
Проект go1 рассчитан на веб?
так в ГО же статическая компиляция...
Концепция проекта в ide -моделирует его окружение (структуру) -в тех областях для которых ЯП спроектирован (так как воспринимают эти области создатели ide) -  а Go планировался производительная альтернатива  PHP,Ruby,Python... ну и СИ++  для некоторых видов серверных приложений -разве нет  ;) ?
Не совсем. Go это логическое развитие Limbo, то есть языка общего назначения. В том числе и для всякого там "системного" программирования. Поскольку язык общего назначения, то использовать его можно для чего угодно. Ну, например для веба. Google его там и использует - см. GAE. Это просто та ниша куда гугл его может проще всего пропихнуть пользуясь своим весом на этом рынке и своими сервисами.

Да, а IDE у Go официального нет. :-) Основные разработчики используют Acme.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #17 : Апрель 09, 2012, 03:51:16 pm »
При запуске программы на go, скомпилированной компилятором 8g рантайм пытается выделить 512 мегабайт виртуального адресного пространства для нужд сборщика мусора.

Oberon warning: fat runtime detected.

Не, ну нахера ему 512 метров на стартапе??? А почему не гигабайт тогда, для ровного счета?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #18 : Апрель 09, 2012, 03:59:19 pm »
При запуске программы на go, скомпилированной компилятором 8g рантайм пытается выделить 512 мегабайт виртуального адресного пространства для нужд сборщика мусора.

Oberon warning: fat runtime detected.

Не, ну нахера ему 512 метров на стартапе??? А почему не гигабайт тогда, для ровного счета?
Где там fat runtime? Оно ПЯМЯТИ не требует 512 метров. Оно требует адресное пространство. В плане памяти там рантайм очень скромный. Скромнее чем у всяких птонов и тем более жаб.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #19 : Апрель 09, 2012, 04:03:45 pm »
Где там fat runtime? Оно ПЯМЯТИ не требует 512 метров. Оно требует адресное пространство. В плане памяти там рантайм очень скромный. Скромнее чем у всяких птонов и тем более жаб.

Я понял, что речь об адресном пространстве. Но его длиннее писать. Итак, нахрена ему 512 метров адресного пространства? :)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #20 : Апрель 09, 2012, 04:08:02 pm »
Где там fat runtime? Оно ПЯМЯТИ не требует 512 метров. Оно требует адресное пространство. В плане памяти там рантайм очень скромный. Скромнее чем у всяких птонов и тем более жаб.

Я понял, что речь об адресном пространстве. Но его длиннее писать. Итак, нахрена ему 512 метров адресного пространства? :)
Чтобы 10 раз за ним не бегать? :-)
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #21 : Апрель 09, 2012, 04:11:00 pm »
Чтобы 10 раз за ним не бегать? :-)

Хорошо, почему не гигабайт? :)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #22 : Апрель 09, 2012, 04:16:35 pm »
Чтобы 10 раз за ним не бегать? :-)

Хорошо, почему не гигабайт? :)
Вообще, думаю, что с длинным непрерывным куском адресного пространства просто сборщик мусора проще (и возможно эффективней), чем с фрагментированным адресным пространством. Вот и все. Решили сэкономить на разработке, тем более что целевая система у них сейчас - 64битная (тот же GAE на 64битах крутится), где проблемы с адресными пространствами просто нет.

Почему 512 - хез. Может прикинули максимальный средний объем ОЗУ который потребуется приложению.

PS. Но никто не мешает использовать gccgo, где рантайм другой и этой проблемы нет.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #23 : Апрель 09, 2012, 04:36:48 pm »
Кстати, как я понял, Go резервирует большое адресное пространство для более эффективной работы сборщика мусора. А именно - таким образом они пытаются уменьшить вероятность коллизий консервативного сборщика мусора (а у них он консервативный). Таким образом, проблема не специфична именно что для Go - при любой реализации рантайма (вне зависимости от языка) с консервативным сборщиком мусора приходится выбирать - либо высокая вероятность коллизий (а следовательно и утечек памяти), либо резервируем большое адресное пространство, но тогда будут проблемы на архитектурах с "тесным" адресным пространством (32 битным например).
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #24 : Апрель 09, 2012, 04:59:11 pm »
Собственно вот тут: http://code.google.com/p/go/issues/detail?id=909 как раз описание проблемы с утечками на 32битной архитектуры из за мелкого адресного пространства в сочетании с консервативныс сборщиком мусора.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Язык программирования Go
« Ответ #25 : Апрель 09, 2012, 05:25:48 pm »
Так и не понял что нужно чтобы его подсадить - вроде на XP32 - примитивщина запускается (может версия компилятора была старая...)

DIzer

  • Гость
Re: Язык программирования Go
« Ответ #26 : Апрель 09, 2012, 05:32:49 pm »

Да, а IDE у Go официального нет. :-) Основные разработчики используют Acme.
На безрыбье сойдет и liteide - довольно удобна - в особенности для ознакомления новичками - недочеты допилят за год (если не забросят, конечно).

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #27 : Апрель 10, 2012, 08:48:52 am »
Собственно вот тут: http://code.google.com/p/go/issues/detail?id=909 как раз описание проблемы с утечками на 32битной архитектуры из за мелкого адресного пространства в сочетании с консервативныс сборщиком мусора.
Кстати, цитатка из Вирта (глава 8. Память: разметка и управление):
Цитировать
В случае трех областей (памяти) приходится произвольно определять предельные размеры. Однако наличие аппаратных средств отображения адресов облегчает задачу, потому что  виртуальное адресное пространство так велико, что его предел почти никогда не достигается.
Ну и в оригинале:
Цитировать
In the case of three spaces, arbitrarily determined size limits are unavoidable. The presence
of an address-mapping hardware alleviates the problem, however, because the virtual address space is
so large that limits will hardly ever be reached.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #28 : Апрель 10, 2012, 09:33:22 am »
Дочитал эту главу. Разочарован. Там ничего не сказано про определение корней деверьев, то есть нет ничего про сканирование стека на предмет указателей. Ну и про статические переменные тоже ничего нет.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: Язык программирования Go
« Ответ #29 : Апрель 10, 2012, 11:55:06 am »
ничего про сканирование стека на предмет указателей
А в том Обероне, кажется, сборщик мусора запускался только между вызовами пользовательских процедур непосредственно из главного цикла операционной системы, то есть на стеке в это время никаких пользовательских объектов нет, сканировать нечего.