LINUX.ORG.RU

Написание веб-приложений на языке Go

 ,


0

2

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

>>> Подробности



Проверено: svu ()

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

а вон можно веб-приложения на ассемблере писать


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

Например, хотите веб-приложение на BASIC?

PRINT "Content-type: text/html"
PRINT
PRINT "<html><body><h1>Hello, world!</h1></body></html>"
DRVTiny ★★★★★ ()

>«Написание веб-приложений», в которой рассмотрено создание веб-страниц
Взаимоисключающие паграфы. Всё-таки приложение и высер из груды тегов - это как бы не одно и то же.

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

Поведуйте же пожайлуста, какое отношение js имеет к динамике веб-приложений.

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

Веб-приложения как правило открывают сокет и общаются через него, если не в курсе. По определенному протоколу. И их можно писать хоть на bf.

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

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

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

>Всё-таки приложение и высер из груды тегов - это как бы не одно и то же.

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

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

> лучший синтаксис у JavaScript, с этим всем согласятся

я не соглашусь

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

> Просто ты тролль.

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

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

> вид передачи анонимной функции в качестве параметра в JS вызывает

тошноту, после этого даже синтаксис лиспов смотрится весьма красиво


Это легко рулится превращением функции в именованную, а в CL любой более менее сложный код с замыканиями смотрится убого и трудночитаем.

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

> Это легко рулится превращением функции в именованную,

это «уход от ответа», а не «рулится»

а в CL любой более менее сложный код с замыканиями смотрится убого и трудночитаем.

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

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

если вдруг Go станет подмножеством стандарта ActionScript

с чего вдруг такое странное условие?

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

> это «уход от ответа», а не «рулится»

Не понял.

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


В JS идеально за счёт локальных функций, а в CL вложенные формы labels быстро сдвигают код вправо и превращают его в кашу.

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

Можно в оффтопике писать COM-сервера автоматизации на асме

чёткие поцанчики делают это на Лиспе.

ugoday ★★★★★ ()

Этот язык - говно.

Оказуется, если перенести скобку на новую строку в коде func func_name() {} то выдает ошибку:

syntax error: unexpected semicolon or newline before {

Закопать это убожество!

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

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

ЕМНИП в делфи были соответствующие компоненты.

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

>мазила - даёшь <script type=«text/python» version=«*.*»></script>

Криокамера потекла? Напитономозилле ActiveState Komodo написан. 100 лет уже.

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

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

В Ruby не убого.

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

> В JS идеально за счёт локальных функций

Ага, ага.
blabla(a, b, c, function(d, e, f) {
много кода
}).blabla2(function(x, y) {
еще много кода
}, function(x, y) {
опять много кода
})

Просто верх удобства и читабельности. А уж как легко набирать все эти function() {}

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

>ЕМНИП в делфи были соответствующие компоненты.

У дельфи компилятор и иде к маздаю корнями приросли. Относительно несложно портируются проекты на другие платформы через лазарус и фпц, а сам дельфи разрабы не могут даже на x86-64 запилить, не то что на линукс или бсд. На лазарусе есть похожий проект, даже несколько простеньких сайтов на нём запилено. Но, похоже, сейчас там только один разработчик, или два. http://freepascal.ru/forum/viewtopic.php?f=9&t=3646&start=0

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

> blabla(a, b, c, function(d, e, f) {

много кода

}).blabla2(function(x, y) {


еще много кода


}, function(x, y) {


опять много кода


})



В том, что вы не умете писать на JS, я не виноват. И да, я говорил про локальные функции, а не про анонимные.

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

> И да, я говорил про локальные функции, а не про анонимные.

Т.е. если написать var foo = function(){/*...*/}; bla(foo) вместо bla(function(){/*...*/}), то что-то принциально поменяется?

Ах, да, станет еще запутаннее: just as planned.

В том, что вы не умете писать на JS, я не виноват.

Это видимо из того же разряда, что и «умение писать на с++, имея некоторый скилл для этого», которое щас мелькнуло в треде в Development. Ну да, можно потратить долгие месяцы на изучение ненужной херни и гордиться этим. Разница, впрочем, в том, что изучение си++ наделяет хоть и бесполезными, но знаниями, а в JS изучать нечего: хэш-объекты, функции, прототипы, неудобный синтаксис и несколько удачно расставленных граблей — этим полный список свойств языка исчерпывается.

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

> Т.е. если написать var foo = function(){/*...*/}; bla(foo)

вместо bla(function(){/*...*/}), то что-то принциально поменяется?


Во-первых, просто function foo { /* */ }, присваивание не нужно. Во-вторых - да, если понять как работают замыкания, то код становится намного чище и проще. Особенное по сравнение с Common Lisp.

изучение си++ наделяет хоть и бесполезными, но знаниями


Да вы эксперт. Знание C++ даёт возможность писать сложные приложения там, где нужна выскокая производительность. Посмотрите на код V8, MongoDB, Sphinx и т.п. - предложите адекватную замену C++? Её просто нет.

JS изучать нечего


На изучение любого языка, каким бы простым он не выглядел, нужно от 2-3 лет активной практики и вдумчивого чтения чужого кода. Иначе будет говнокод. Впрочем, для языков типа C++ и Common Lisp видимо надо от 5-ти лет. Так что да, JavaScript значительно проще.

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

> Во-первых, просто function foo { /* */ }, присваивание не нужно.

Не суть. Хрен редьки слаще на 4 символа.

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

Речь вообще была не о том, как работают замыкания. Речь шла о том, как они _выглядят_. А выглядят в JS они премерзко.

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

Знание C++ даёт возможность писать сложные приложения там, где нужна выскокая производительность. Посмотрите на

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

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

>Например, хотите веб-приложение на BASIC?

Какой, там, Basic. Я когда-то делал активные страницы на .bat-файлах :)

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

> Речь шла о том, как они _выглядят_. А выглядят в JS они премерзко

Выглядят они отлично. Где выглядят лучше?

Если ваш язык не позволяет по-человечески даже объявить

анонимную функцию



Вы о каком языке?

«программирование на Си++» в 95 случаях из 100 сводится к

мастурбации на паттерны и проектированию шаров в вакууме.



У вас какая-то своя реальность? Оценивайте язык по коду профессионалов, а не по комментариям троллей на ЛОРе.

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

> Lisp, scheme - набросал dsl под задачу и вперед.

я чуть от смеха не описался

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

Вы понимаете, чем отличается «сайт» от приложения? Просто понимаете... вот то, что высирает Go - оно же абсолютно статично, вся динамика заключается в том, чтобы в ответ на нажатие кнопочки загрузить ещё что-то статичное. Это всё равно как если бы OpenOffice.org Writer для вывода меню файл делал exec самого себя, но уже с открытым меню. Это дико тупая конценпция, и с точки зрения пользователя вся эта хрень на пыхах и прочем cgi-хламе - это слайд-шоу. Если там нет интерактивной части, работающей на стороне браузера, то это убожество на уровне 90-х годов прошлого века.

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

Есть конкретный пример веб-приложения - Zimbra Desktop. Вот это реальная вещь! Весь код загружается в браузер, а дальше клиент и сервер только запросами/ответами в XML обмениваются. И никаких релоадов страницы, даже понятия такого нет!

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

>Веб-приложения как правило открывают сокет и общаются через него, если не в курсе.

Чего??? А пример какой-нибудь можно? И если они в кеб таким образом не имеют отношения, а по сути это просто сервер для некоего клиента, то при чём здесь веб??

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

>и с точки зрения пользователя вся эта хрень на пыхах и прочем cgi-хламе - это слайд-шоу.

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

Просто понимаете... вот то, что высирает Go - оно же абсолютно статично, вся динамика заключается в том, чтобы в ответ на нажатие кнопочки загрузить ещё что-то статичное.

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

Это всё равно как если бы OpenOffice.org Writer для вывода меню файл делал exec самого себя, но уже с открытым меню.

Обновлял в досе окна похожим методом, это имеет смысл если библиотеку писали люди, которые завинтили гайки и не дают использовать их код для других целей и другим способом. Броузеры тоже не дают разгуляться, заставляют использовать именно жабу, значит нужно хитрить на стороне сервера, если канал позволяет. Надо же куда-то потратить 5-10 мегабит! Для лазанься по сайтам и качания как-то хватает безлимитки на 1 мегабит, но ведь нужно развиваться, изобретать способ «освоения» _оплаченных_ ресурсов! Сижу на лоре, включил торрент, что-то там раздаёт - хоть не зря траффик пропадает.

Если там нет интерактивной части, работающей на стороне браузера, то это убожество на уровне 90-х годов прошлого века.

А что в броузере есть такого прогрессивного и интеллектуального, кроме проверки правописания и качалки со смотрелкой, конечно?

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

Гвидо очень удачно придумал эти отступы

Только их Ландин придумал :)

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