LINUX.ORG.RU

На Go кто-нибудь пишет?

 ,


1

5

Решил тряхнуть стариной и освоить новый язык :) Не просто так, на самом деле. Долго колбасило в выборе между Play Framework на Java/Scala и Revel на Go. В пользу первого гигантское наследие JVM библиотек, Quercus, знание Java и подспудное желание реализовать JBForth2, в пользу второго — значительно более высокая производительность и лучшая (кажется) поддержка фреймворка.

Не то, чтобы выбор окончательно сделан, но явно к Golang следует присмотреться получше для окончательного решения.

Так вот, собственно, смотрю, очень маленькое русскоязычное сообщество Go. Тут есть программисты на оном? Я бы с глупыми вопросами новчика поприставал бы :)

★★★★★

Последнее исправление: CYB3R (всего исправлений: 1)

Это, блин, знак.

Нарисовался тут товарищ один со старых проектов и тянет меня в Java-based проект. Походу, придётся мне делать выбор в пользу Play :) Чтобы не распыляться.

KRoN73 ★★★★★
() автор топика

Ну, я на нем чуть-чуть пописалил, покачто больше написалить не успел, но собираюсь.

Сейчас вот размышляю: как сделать так, чтобы проект собирался под gccgo и под gc, если там много привязок к сишным библиотекам.

proud_anon ★★★★★
()

По сабжу — язык вызывает сложные чувства. Этакий Оберон, испорченный сишниками-юниксоидами. Стиль мышления для него нужен соответствующий. Если вы большой любитель таких штук как Acme и Plan 9 — милости просим.

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

Не то что бы пишу (пока не было повода), но если возникнет соответствующая задача, предпочту его.

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

любитель таких штук как
Plan 9

О да.

Acme

Отличная вещь, только вот текстовый редактор (sam) в ней запустить нельзя.

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

бгг, их и нет, конечно ты можешь считать jsp нормальным, но тыж сам волен выбирать себе приключения

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

А чем Grails лучше? Ну, вопрос преимущества JVM оставим, выше он обсуждалсяю

Просто мне кажется сомнительным использовать использовать статический и такой не богатый язык (в плане синтаксиса и СДК) для *данной* задачи. ИМХО, он совсем для этого не подходит, я бы выбрал Python, ну если статики хочется то Java & Friends.
Вот отдельные части приложения на Go писать самое то. Всякие отдельные сервисы по типу кеша или балансировщика.

P. S.
Может не видел и будет интересно послушать happy story тогда вот видео: http://www.youtube.com/watch?v=kKQLhGZVN4A

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

я бы выбрал Python

Я считаю, хотя Python и намного более удачный, чем PHP, тем не менее, размена PHP-фреймворка на Python-фреймворк с моей точки зрения — шило на мыло :)

ну если статики хочется то Java & Friends

С Java опыт, как раз, большой. И она не кажется особо удачным решением (именно как язык, а не как платформа) для XXI века :) Go выглядит заметно привлекательнее.

С другой стороны, как, опять же, писал, Java — это не только язык, но JVM платформа с богатым выбором, но... как-то всё не то. Scala не нравится синтаксисом, Groovy производительностью... Даже тот же Jython с тем же Boo под .NET не сравнить :-/ Вроде, как у женщин — полный шкаф одежды, а надеть нечего :)

Вот отдельные части приложения на Go писать самое то.

В дальней перспективе меня интересует вариант именно полной независимости нод проектов при высокой интероперабельности без учёта платформы. Чтобы можно было из PHP-проекта дёргать спокойно готовые объекты хоть из того же Django-based проекта. Но для этого нужно сперва реализовать компоненты своего фреймворка позволяющие это. Для PHP сейчас понемногу делаю. А вот для других платформ — сперва надо будет реализовать адекватные надстройки. И тут надо выбирать с чего начать.

Но, как уже отметил, по третьим причинам, похоже, начну, всё-таки с Play Framework и JVM.

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

его кроме как на idea с прибитым ant гдето еще можно запустить?

Если язык удобный, то на нём и в mcedit писать можно :)

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

не не, я понимаю что php и прочие динамики учат храниь список методов в памяти и выводить типы мозгами, но в статически типизированных - автокомплит позволяет экономить суть ли не 90% времени на наборе текста, и главное исправлении опечаток - до компиляции. Тогда можно часик писать модуль, и он сразу соберется и заработает, а не страдать что конпелятор явы долго запускаетя 8)

но в kotlin дело не только в этом, а в том что там дюже запутанная сборка проекта, и перенести ее на сервер сборки - весьма затейливо

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

и как ты в idea открываешь пяток проектов для рефакторинга?

Второе окно никто не отменял. Меня, на данный момент всё устраивает.

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

ты только что глупость сказал про второе окно 8) иначе говоря ты признался что в силу развития не знаешь что такое рефакторинг

а в итоге нетрудно вывести что при таком развитии ты сложнее хелловорлда и writeonly поделок ничего и не писал

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

Ты, как обычно, чего-то там надумал и теперь носишься со своей идеей. Уймись.

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

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

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

у меня «локальный код проекта» - это как правило пять модулей

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

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

выводить типы мозгами

В го типы нужно писать только для функций же. Да и даже в Си++ есть auto, насколько я знаю.

конпелятор явы долго запускаетя

И такой проблемы тоже нет.

Просто ява — не самый удобный язык программирования.

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

В го типы нужно писать только для функций же. Да и даже в Си++ есть auto, насколько я знаю.

var a = func()
a.get().get().get(). //черт, что за тип я получил тут? какой у него метод?
Deleted
()
Ответ на: комментарий от Deleted

Я просто фиксирую версию интерфейса в виде ветки в своей VCS. Новая версия интерфейса - новая ветка. Зависимость проекта тащится по соответствующей ветке. Не вижу никаких проблем.

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

//черт, что за тип я получил тут? какой у него метод?

Нормальная IDE, по Ctrl + Space выведет тебе весь список доступных методов. А по другому шорткату расскажет какой там тип. Никаких проблем нету. В C# уже несколько лет сплошные var'ы в коде и никого это не смущает и не напрягает.

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

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

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

чудище, почитай на что я это писал, а не пересказывай мои посты

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

никто get-get-set-get-set-set-set-get действом в го не занимается.

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

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

а я тебе уже сказал почему

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

Посмотри в сторону jrebel. У меня окружение с Java, Wicket, Intellij Idea, JRebel, меняю код, Ctrl+F9 (можно и без него, но привычка), компиляция идёт секунду-две, за это время переключаюсь на браузер, перезагружаю страницу и уже работает измененный код, при этом изменения подхватываются практически любые. Раз в день может приходится рестартовать JVM. Это изменения в коде, изменения в шаблонах вообще за милисекунды подхватываются, просто альт-таб (идея автоматом сохраняет изменения), ф5 и видно результат.

Под скалу jrebel бесплатный.

Как там в Play Framework сделано обновление, не знаю, но вообще это задача совсем не тривиальная, если изменения не тривиальные.

Ещё компиляция обязательно должна идти с помощью fsc. Если скалу компилировать без него, это долго и грустно, а с fsc скорость практически как с джавой.

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

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

но в статически типизированных - автокомплит позволяет экономить суть ли не 90% времени на наборе текста

Можешь не рассказывать, у меня несколько лет плотного программирования на Java в Eclipse :)

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

a.get().get().get(). //черт, что за тип я получил тут? какой у него метод?

А не пофиг? При статической утиной типизации, если не туда полезешь, ошибку получишь ещё на этапе компиляции. А тип, как раз, знать не обязательно.

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

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

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

Как там в Play Framework сделано обновление, не знаю, но вообще это задача совсем не тривиальная, если изменения не тривиальные.

Они используют движок от Eclipse. А я на нём (при чём много лет назад) обновлял классы на «живом» Lineage-сервере в десятками тысяч активных объектов :) Так что вполне ему доверяю.

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

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

В 90% случаев метод ручками вбить быстрее, чем развернуть автокомплит, найти нужный метод, выбрать его...

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

В 90% случаев метод ручками вбить быстрее, чем развернуть автокомплит, найти нужный метод, выбрать его...

неа 8) либо в еклипсе тупой автокомплит либо ты им пользоваться не научился.

если метод например getSelectionBorderColor() (это нормально в java) то для набора достаточно getS<Ctrl+space><down><enter> посчитай кол-во нажатий сам, а если тип выражения слева выводится нормально то можно еще быстрее 8)

а самое главное, что ошибки проверяются до компиляции

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

не пофиг - компиляция ненужна, рабоработка быстрее

Код на Go компилируется быстрее чем запускается python. Так что и тут разработка ничуть не медленнее

vladimir-vg ★★
()
Ответ на: комментарий от Deleted

экономить суть ли не 90% времени на наборе текста

Узкое место в разработке - чтение и анализ кода, а не его печатание. Такие дела.

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

поэтому названия методов должны быть с понятными именами, а по клику доступна справка по методу и исходный код а не как в mc

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

Как с этим у шаблонизатора Play (вроде, нет отдельного имени?)

Twirl.

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

Scala, Scala же!

До сих пор не могу себе простить, что не начал учить раньше.

LongLiveUbuntu ★★★★★
()

Scala vs Go

Как вообще можно их вообще сравнивать?

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

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

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

Проблемы только с метапрограммированием

бгг, ты меня заставляешь ржать

class Target:
     
    def __init__(self, manager, address):
        self.manager = manager
        self.address = address
        self.trusted = False
        self.connected = False
        self.name = None;
        self.device = None;
        self.device_path = None;
        self.pin_code = "0000";
        
    def find_device(self):
        try:
            device_path = self.manager.adapter.FindDevice(self.address);
            self.set_device(device_path)
        except Exception as err:
            print "device %s not finded %s" % (self.address, err)

вот скажи милый врунишка, как idea узнает что такое FindDevice и покажет мне его сорцы?

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