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

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #30 : Апрель 10, 2012, 12:36:02 pm »
ничего про сканирование стека на предмет указателей
А в том Обероне, кажется, сборщик мусора запускался только между вызовами пользовательских процедур непосредственно из главного цикла операционной системы, то есть на стеке в это время никаких пользовательских объектов нет, сканировать нечего.
Это как-то уж слишком сурово. То есть если во время вызова NEW обнаружится, что память кончился и нужно вызвать сборщик мусора, то сборщик не вызовется и все радостно трапнется?

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

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #31 : Апрель 10, 2012, 01:01:23 pm »
Кстати, по прочтению этой главы, у меня появилось ощущение, что GC в ОС Оберон ни разу не консервативный.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #32 : Апрель 17, 2012, 05:35:18 pm »
На заметку - у Go, как оказалось, не просто два компилятора (один gc - корнями уходит в plan9, другой gccgo), а два действительно разных фронтенда. Один фронтенд (у gc) писан на Си, другой фронтенд (у gccgo) писан на С++.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Язык программирования Go
« Ответ #33 : Апрель 18, 2012, 09:34:59 pm »
valexey, а вот это имеет место быть:
... Например, если вместо
if a > b {
Printf("a > b")
}
написать
if a > b
{
Printf("a > b")
}
то функция Printf() будет вызываться всегда, независимо от значений a и b. При этом компилятор не сообщит об ошибке... Будет выдано только предупреждение. ... может стать источником трудновыявимых ошибок
http://forum.oberoncore.ru/viewtopic.php?f=26&t=2036&hilit=Google+Go&start=60#p47128
или уже исправили?

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #34 : Апрель 18, 2012, 09:46:49 pm »
valexey, а вот это имеет место быть:
... Например, если вместо
if a > b {
Printf("a > b")
}
написать
if a > b
{
Printf("a > b")
}
то функция Printf() будет вызываться всегда, независимо от значений a и b. При этом компилятор не сообщит об ошибке... Будет выдано только предупреждение. ... может стать источником трудновыявимых ошибок
http://forum.oberoncore.ru/viewtopic.php?f=26&t=2036&hilit=Google+Go&start=60#p47128
или уже исправили?
Не знаю. Скобочки как во втором варианте не пишу (хотя когда-то, лет 5-6 назад, в плюсах скобочки именно так и рисовал).

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

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Язык программирования Go
« Ответ #35 : Апрель 18, 2012, 09:51:24 pm »
Да... в рантайм такое пропускать не надо бы. Мало ли интер где клацнул случайно, а потом ищи неделю почему оно глючит...

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #36 : Апрель 18, 2012, 09:53:13 pm »
Проверил:
package main

import "fmt"

func main() {
    if 0 > 1
    {
        fmt.Printf("a > b")
    }
}

Ошибка компиляции:
go build
# _/home/valexey/Projects/go
./hello.go:6: missing condition in if statement
./hello.go:6: false not used

Также ошибка компиляции будет в случае
package main

func main()
{
}

Ошибка такая:
./hello.go:4: syntax error: unexpected semicolon or newline before {
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #37 : Декабрь 13, 2012, 12:37:01 pm »
Помогите, плз, прикрутить гуй win32 https://github.com/AllenDang/gform к Go.

Setup
go get github.com/AllenDang/gform
go install github.com/AllenDang/gform
не пойму, это ж не под линукс...

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #38 : Декабрь 13, 2012, 01:01:55 pm »
Помогите, плз, прикрутить гуй win32 https://github.com/AllenDang/gform к Go.

Setup
go get github.com/AllenDang/gform
go install github.com/AllenDang/gform
не пойму, это ж не под линукс...
А что именно не поймешь?
Y = λf.(λx.f (x x)) (λx.f (x x))

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #39 : Декабрь 13, 2012, 01:48:16 pm »
Помогите, плз, прикрутить гуй win32 https://github.com/AllenDang/gform к Go.

Setup
go get github.com/AllenDang/gform
go install github.com/AllenDang/gform
не пойму, это ж не под линукс...
А что именно не поймешь?
ни инсталятора ни инструкции что откуда и куда копировать и настраивать, только командная строка по установке в стиле линукса, которая выдает ошибку при запуске с консоли.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #40 : Декабрь 13, 2012, 01:56:24 pm »
Помогите, плз, прикрутить гуй win32 https://github.com/AllenDang/gform к Go.

Setup
go get github.com/AllenDang/gform
go install github.com/AllenDang/gform
не пойму, это ж не под линукс...
А что именно не поймешь?
ни инсталятора ни инструкции что откуда и куда копировать и настраивать, только командная строка по установке в стиле линукса, которая выдает ошибку при запуске с консоли.
У тебя Go вообще установлен? В путях прописан как надо? go help что говорит?
У Go свой пакетный менеджер (то о чем давно мечтали любители ББ ;-) ), и никаких инсталляторов для пакетов/либ не нужно на любой платформе. И ничего руками копировать тоже не нужно.
Y = λf.(λx.f (x x)) (λx.f (x x))

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #41 : Декабрь 13, 2012, 02:43:36 pm »
C:\Program Files\Go\bin>go env
set GOARCH=386
set GOBIN=
set GOCHAR=8
set GOEXE=.exe
set GOGCCFLAGS=-g -O2 -m32 -mthreads
set GOHOSTARCH=386
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=
set GOROOT=C:\Program Files\Go
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_386
set CGO_ENABLED=1


C:\Program Files\Go\bin>go get github.com/AllenDang/gform
# cd .; git clone https://github.com/AllenDang/gform C:\Program Files\Go\src\pkg
\github.com\AllenDang\gform
package github.com/AllenDang/gform: exec: "git": executable file not found in %P
ATH%

C:\Program Files\Go\bin>

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #42 : Декабрь 13, 2012, 02:48:31 pm »
а сам git установлен?

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #43 : Декабрь 13, 2012, 03:03:08 pm »
а сам git установлен?
нет

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Язык программирования Go
« Ответ #44 : Декабрь 13, 2012, 05:14:40 pm »
Оно? _ttp://git-scm.com/