LINUX.ORG.RU

Посоветуйте язык для web'a


0

0

Ни бум-бум, но хоцца :)
Как я понимаю, нужна разметка страницы (html) и скриптовый язык (СЯ). Если с html более-менее понятно, то с СЯ - вопрос ? Какими свойствами он должен
обладать ? (Приходит на ум тока скорость). Ну в общем посоветуйте, желательно
с ссылками.

P.S.
Жабу, наверное, не надо )


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

Вы всегда читаете обрывками? Тогда мне интересно как вы вообще дочитали так далеко.
Могли бы остановиться на одном слове «круг» и выдать массу вопросов про какой круг я говою: какого он цвета, из какого материала, какой диаметр круга.
Это шутка, конечно, но читайте до конца ибо данная цитата имеет вес только в совокупности с остальной частью.

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

>можно написать свой фреймворк, с блекджеком и проститутками :)
Если вы обладаете такой логикой, то мне остаётся только предположить что вы не используете иные языки кроме асма.
«А зачем? Я же могу сначала написать свой язык, а затем на нём свой проект!»
Не в обиду, но говорится о реальных вещах, а не о том что вообще возможно или нет.

Вполне реально. Только писать долго и некроссплатформенно

Возможно, но не реально.

Да и чем принципиально отличается веб-кодинг на, скажем ПХП от С

Вопрос не в синтаксисе, а в библиотеках. Что с того что апач написан на сях? Вы предлагаете писать модуль для апача? Были люди, сфейлили люди.

Что кроме устоявшихся традиций мешает писать под веб на С

Скорость разработки и количество инструментов

Наличие большего количества мозгов нужно, это да

И времени.

Вообще, сфера веб-программирования сильно оккупирована быдлокодерами

Ибо нужно быстро и чтобы работало. А где такого нет? Вот там где такого нет - нет быдлкодеров(или почти нет). Вывод: они есть везде. Так и есть.

Для них изобретают всякие быдло-языки, в которых нет указателей, чтобы они, не дай Бог, мозг себе не сломали :)

Низкоуровневая работа с памятью есть почти в каждом языке.

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

>Не об это просили ведь. Просили инструмент для новичка веб-кодера.

С моей нескромной точки зрения, если новичёк упомянул о опыте с caml, этого достаточно чтобы начать советовать lisp/scheme/erlang/haskell.

Лично я считаю самым подходящим для новичков Parser3, что уже высказавал. Но это субъективное мнение и я об этом знаю. Parser3 вообще ни на что не похож, только в этом может быть сложность освоения.

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

>Вы всегда читаете обрывками? Тогда мне интересно как вы вообще дочитали так далеко.

Мне показалось что ваш пост оскорбляет негров^Wспециалистов без диплома. Возможно только показалось.

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

> я говорю про лисп как о совокупности всех его деталей, процесса

программирования на нём и степени его развития относительно

других языков.



Ну и как же ты можешь об это говорить, если ты про это ничего не знаешь? Телепат?

Если на лиспе кодить - ад, то с чего я должен на нём «много» кодить?


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

У Common Lisp есть свои проблемы и я первый готов говорить о них, но зачем молоть чепуху непонятного происхождения?

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

Ни сколько. Сами, пока, такие.

2archimag: Ну сколько можно то? Наши тролли умеют иногда выходить из такого состояния, а вы, видимо, уже забыли когда были человеком...
В игнор :3

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

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

Кодить рай, а рефакторить? Lisp сам по себе поощряет стиль writeonly. Чего только стоит только то, что вызов функции и применение макроса имеют один синтаксис.

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

Я кодил на CommonLisp курсач - архиватор, использующий алгоритм Лемпеля-Зива. Потратил кучу времени и удовольствия мне этот процесс не доставлял. Потом написал за 1 час ту же прогу на С(для другого курсача) и работала она в 16 раз быстрее

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

> Кодить рай, а рефакторить?

А рефракторить ещё лучше.

Lisp сам по себе поощряет стиль writeonly.


Гы, сфига это?

Чего только стоит только то, что вызов функции и применение

макроса имеют один синтаксис.



В чём проблема? В лиспе всё один синтаксис имеет. Как говаривал Грэхэм в лиспе вообще синтаксиса нет.

archimag ★★★
()

Я просто оставлю это здесь :)

(правда это под оффтопик, но при желании можно переделать под линукс)

;   ----------------------------------------------------------------
;   Program Name: cgidemo.asm
;   Author: Andy Beckman
;   Date:  11/14/01
;   Email: andy981@cafes.net
;   This program,is simple example how to make a cgi program in assembly
;   It should be built with the "Console Assemble & Link" option on
;   the project menu.
;   ----------------------------------------------------------------
      .386
      .model flat, stdcall
      option casemap :none   ; case sensitive

      include \masm32\include\windows.inc

      include \masm32\include\user32.inc
      include \masm32\include\kernel32.inc
      include \masm32\include\masm32.inc

      includelib \masm32\lib\user32.lib
      includelib \masm32\lib\kernel32.lib
      includelib \masm32\lib\masm32.lib

      Main   PROTO

      .data
      lf          db 13,10,0
      content     db "Content-type: text/plain",13,10,13,10,0
      
      top         db "<html>",0
      centertop   db "<center><b><i><font face=""Eras Ultra ITC"" size=""5"">",0
      mytop     db "<head><head><title>Assembly Alphabet CGI</title>",
                     "</head><body bgcolor=""#000000"" text=""#FFFFFF"">",0
      mytitle    db   "<center><b><i><font face=""Eras Ultra ITC"" size=""6"">",
                      "A CGI program made in Assembly<br> That prints ASCII characters 65 to 90",
                      "</font></i></b></center><br><br>",0

      
      num         dd  65
      centerb     db "</font></i></b></center>",0
      bottom      db "</html>",0

    .code

    start:
      invoke Main
      invoke ExitProcess,0

Main proc

    LOCAL cmdBuffer[128]:BYTE
    LOCAL cntBuffer[8]
    LOCAL cnt :DWORD

    mov cnt, 0

    invoke ClearScreen
    invoke StdOut,ADDR content
    invoke StdOut,ADDR top
    invoke StdOut,ADDR mytop
    invoke StdOut,ADDR mytitle
    invoke StdOut,ADDR centertop

  @@:
    invoke GetCL,cnt,ADDR cmdBuffer
   
    invoke StdOut,ADDR num
    add num, 1
    cmp eax, 1
   
    invoke StdOut,ADDR lf  
    inc cnt
    cmp num,91
    jl @B
  @@:
 invoke StdOut,ADDR centerb
 invoke StdOut,ADDR bottom

    ret

Main endp

    end start

Учись, ТС :)

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

> Потратил кучу времени и удовольствия мне этот процесс не доставлял.

Вы использовали SLIME?

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

Учиться чему? Копипастить? Это плохой скилл. Да и:
[code]
include \masm32\include\windows.inc

include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc

includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
[/code]
Нужны комментарии?

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

Из этого утверждения следет, что самый простой и лучший в мире язык - Lisp.

Нет. Из этого следует, что у Лиспа хороший синтаксис. Что, собственно, никого не интересует.

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

> Человек явно работает один и после него код никто не смотрит.

Я правильно понимаю, что все, кто когда-либо работал с CL, а также те, кто его стандартизировал, все они были одиночки? А такие системы как ACL2, GBBOpen, PowerLoom и т.п. были написаны одиночками, при чём за один раз, без переписываний?

P.S. Я работал и один, и в командах, и никто пока не жаловался на мой код.

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

Что кроме устоявшихся традиций мешает писать под веб на С?

Совершенно невменяемые строки (для веба особенно существенно).

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

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

И ещё, я постоянно и помногу читаю код на Common Lisp, C, Python и PHP. Худший язык для понимания - Python, хотя я на нём и писал больше, чем на С, но С я обычно понимаю лучше (лучшие проекты на PHP тоже хороши). Лучший, для понимания код, в большинстве случаев CL, хотя, конечно, бывают с ним проблемы, но не сколько из-за проблем в языке, сколько из-за проблем в голове автора, ибо он (Common Lisp) позволяет нагородить всякого.

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

>> Из этого утверждения следет, что самый простой и лучший в мире язык - Lisp.

Нет. Из этого следует, что у Лиспа хороший синтаксис. Что, собственно, никого не интересует.


Я бы сказал наоборот - у LISP синтаксис убогий и нечитабельный. Плюс к этому объём кода для многих (и, скорее, большинства) задач окажется больще чем, например, на C.

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

Плюс к этому объём кода для многих (и, скорее, большинства) задач окажется больще чем, например, на C.

Очень сомнительное утверждение. Если бы речь шла хотя бы о C++, я бы и то не согласился. А уж чистый C...

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

ладно, так сойдет ? :)

format ELF executable
entry start

segment readable executable

start:

    mov eax,4
    mov ebx,1
    mov ecx,header
    mov edx,header_size
    int 0x80

	mov	eax,4
	mov	ebx,1
	mov	ecx,msg
	mov	edx,msg_size
	int	0x80

	mov	eax,1
	xor	ebx,ebx
	int	0x80

segment readable writeable

header db 'Content-type: text/html',0x0D,0x0A,0x0D,0x0A
header_size = $-header
msg db '<html><h1>Hello world!</h1></html>',0xA
msg_size = $-msg

Для компиляции использовать fasm

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

> Плюс к этому объём кода для многих (и, скорее, большинства)

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


Хорошо, вот есть Closure Templates от Google, объём кода 15 000 строк на Java. Я без использования каких-либо специфичных библиотек (типа навороченных парсеров)реализовал тот же функционал (за исключением тэга msg, для которого потребуется ещё строк 200 максимум) на Common Lisp в 1000 строк кода.

Может вы знаете какие-то другие проекты, реализующие один и тот же функционал на разных языках, что бы можно было сравнить?

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

Может вы знаете какие-то другие проекты, реализующие один и тот же функционал на разных языках, что бы можно было сравнить?

есть аналоги Reactive/YAMPA/Grapefruit на CL? с примерами использования вроде Frag'а?

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

>Я работал и один, и в командах, и никто пока не жаловался на мой код.

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

Даже если лисповские макросы выглядят лутше макросов C/C++ , то это есчё не значит что они хороши.

И то что ты сам умееш обращатся с лиспом, не означает что у лиспа нет проблем.

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

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

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

>ибо он (Common Lisp) позволяет нагородить всякого

Perl тоже позволяет нагородить всякого (с примерами можно ознакомится в цитатниках подобных шедевров).

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

> Если макросы не являются частью API

...

Даже если лисповские макросы выглядят лутше макросов C/C++ ,


то это есчё не значит что они хороши.



Это один из мифов по поводу CL, мол главная его сила в макросах, что, конечно, не так. В CL нет «самой убойной фичи», макросы это проста одна из важных его составляющих. И, конечно, макросы могу быть использованы «во зло». Обычно в хорошем коде доля макросов весьма мала и они используются только там, где их преимущества являются совершенно очевидными.

И то что ты сам умееш обращатся с лиспом,

не означает что у лиспа нет проблем.



Разве я когда-нибудь говорил, что у него нет проблем? http://archimag-dev.blogspot.com/2009/12/common-lisp-web.html - вот, писал совсем недавно ;)

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

>Я пишу на Common Lisp для веб и всем советую, это противозаконно?

Покажите мне хотя бы один полноценный фреймворк на LISP (например, в альтернативу django). Или Вы так «всем советуете» писать кода на порядок больше, чем нужно непосредственно для поднятия сайта?

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

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

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

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

> Покажите мне хотя бы один полноценный фреймворк на LISP

Weblocks (http://weblocks.viridian-project.de/)
Core Server (http://labs.core.gen.tr/)

Мне они не нравятся, я пишу свой (на нём работает lisper.ru), при этом я как бы достаточно подробно разбирался (и продолжаю разбираться) с RoR, Django, смотрю некоторые PHP-решения и я не думаю, что кода на Django надо меньше, тем более на порядки, скорей уж наоборот. При этом, у того же Django, как и у RoR, есть клиническая проблема с ORM, а если этот ORM вам не нужен, то что остается в итоге?

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

а что плохого в кроссплатформенном ассемблере?
Он ведь лишен важного недостатка обычного ассемблера - непереносимости

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

>Разве я когда-нибудь говорил, что у него нет проблем?

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

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

>а что плохого в кроссплатформенном ассемблере?

Ты так говориш, как будто я сказал чото это чтото плохое.

PS Сам раньше делал файловые конверторы на lex/yacc с выводом отчётов в виде XML. Сейчас усилено учу scheme в виду наличия компиляторов в C. Ибо gcc на серверах встречается чаще чем ghc.

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

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

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

Ну нравится человеку на ассемблерах писать. И это хорошо, другие люди его гнушатся, а некоторые так же гнушатся C и C++. Будет на кого спихивать грязную работу. :)

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

>Хоть убей не вижу смысла в данном коде.

Посмотри «Сауцпарк» серию про чубаку ;)

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

Поясните, как из

!(Синтаксис - это детали/мелочь.) && Чем проще и понятнее читать/писать код, тем больше ментальный усилий тратится на суть работы, + меньше ошибок.

следует

у Лиспа хороший синтаксис.

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

А с чего это вдруг программирование на С или ассемблере - грязная работа?

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

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

принципиально будет то же самое, только в цикле :) В начале каждой итерации надо будет вызывать FCGI_Accept(), и если функция не вернула отрицательное значение, выводить строку, в противном случае завершить приложение

ну и слинковать с libfcgi

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

Сначала вы поясните, как из перечисленного следует, что Лисп - лучший язык.

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

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

Хм.. вот Пол Грехем приводил какуб-то программу в пример и говорил, что там дескать 40-50% кода - макросы. Я тогда еще подумал, что совсем не умею лисп готовить.

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

> Пол Грехем приводил какуб-то программу в пример и говорил,

что там дескать 40-50% кода - макросы.


Это он говорил про Viaweb (позже известного как Yahoo! Store) и там была цифра 30%. Там же он говорил, что обычно макросами надо пользоваться очень аккуратно и только для каких-то уникальных возможностей. Ну и пытался как-то увязать столь большой процент макросов с уникальными возможностями данного сервиса.

Вообще, надо сказать Грэхэму большое спасибо за его вклад в популяризацию Common Lisp и идти дальше, ибо он, похоже, остался где-то в середине 90-х.

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

!(ситаксис - детали/мелочь) && (Чем проще и понятнее читать/писать код(т.е., учитывая контекст, проще и понятнее ситаксис), тем больше ментальный усилий тратится на суть работы, + меньше ошибок.) => лучшим языком является тот, в котором самый простой синтаксис.

Принимаем во внимание http://cuiwww.unige.ch/db-research/Enseignement/analyseinfo/LISP/BNFindex.html и приходим к выводу, что язык с самым простым синтаксисом, а следовательно и позволяющий тратить больше всего ментальных усилий на суть работы - Лисп.

Проблема в том, что утверждение анонимуса неверно. Неужели Вы этого не заметили?

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