Как стать автором
Обновить

Комментарии 70

Не <a>, а <я>! Anchor = якорь.
НЛО прилетело и опубликовало эту надпись здесь
мопед картинка не моя, я только в пост разместил.

А если серьезно — вопрос о том, как назвать очередную команду оказался нетривиальным. Хотелось, чтобы команды были понятными, но краткими, а иногда просто было сложно придумать русскоязычный аналог.
Например, как адекватно перевести на русский <a> и <link>? Ведь и то, и другое — ссылка.
— это ссылка, а — это anchor (якорь). Он может быть использован не только для перехода в другое место, но и как маркер на странице, к которому можно перейти.
Нет, я про другое: <a> — это тег HTML, который используется для создания ссылок на файлы (например, другие страницы сайта), а <link> — тег, который используется для подключения, например, файлов со стилями.
Но ведь фактически, и то, и другое — ссылки. Как адекватно перевести названия этих команд на русский?
Похоже понял, что вы имели в виду (видимо теги «съело»).
Возможно вы правы и такой вариант именования команд был бы более верным. Хотя я всегда думал, что <a> — это ссылка (зато теперь понятно, почему «а» — спасибо за ликбез).
Нормально краткими вы их не сделаете никак просто из-за структуры языка. Средняя длинна слова в англ. яз. 4 символа, поэтому многие сокращения это почти само слово. В рус. яз. же средняя длина слова 7 символов.

Вот если бы вы изобрели трехбуквенный тег, которым можно было бы описывать страницы не хуже, чем командуют в армии...!!!)
Вы переизобрели синтаксис LaTeX.
Вообще говоря да, я сознательно использовал похожие на латех команды. Но можно ли говорить, что это синтаксис LaTeX?
Но можно ли говорить, что это синтаксис LaTeX?

я сознательно использовал похожие на латех команды

Вы сами отвечаете на свой вопрос. Это не синтаксис LaTeX, это похожие на LaTeX команды.
Или как создать текстовый редактор с подсветкой синтаксиса ЯГТР. Но тут я даже не знаю с какого края ухватиться.

Для начала можно попробовать посмотреть на генераторы парсеров по грамматикам — например, на pegjs. Далее можно попробовать свои силы в написании плагина к какому-нибудь редактору. В частности, например, для NetBeans-а еще нет подсветки pegjs, а сделать ее не очень сложно. Самое интересное, что на основе примера интеграции новой подсветки языка можно реализовать подсветку грамматики pegjs с помощью самого pegjs (если сначала портировать его на java. Впрочем, можно воспользоваться и другим парсер-комбинатором, но это не так эпично)! Я и сам хочу этим заняться, но пока поглощен другим проектом.

Можно взять готовый компонент Scintilla — это такой крутой встраиваемый редактор с подсветкой синтаксиса, например Notepad++ или FlashDevelop поверх него сделаны. Очень мощная и в то же время довольно простая штука для создания редакторов для каких-то своих форматов исходного кода.

Да, Scintilla прекрасный компонент, больше всего он мне нравится тем, что сворачивает код железно везде, а не игнорирует какие-то странные случаи, как, к сожалению делает NetBeans для Java-классов на верхнем уровне файла (кто им сказал, что их не нужно сворачивать? В одном файле, вообще-то, несколько package-private классов может быть и невозможность их свернуть очень огорчает) или MSVS (почему-то иногда не считает нужным сворачивать блоки в фигурных скобках внутри функций. Километровые if-ы и switch-и читать просто "удовольствие"). Плюс нормальные маркеры свертывания, а не как в каждой IDE изголяются кто во что горазд — то линию "от сих до сих" прячут, пока не наведешь мышь (кому она мешает?), то вместо нормальных ± какие-то стрелки понатыкают. SciTE до сих пор мой любимый редактор именно из-за этой простоты и детерминированности, всяким Sublime-ам и Atom-ам до него еще расти и расти в этом плане.


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

НЛО прилетело и опубликовало эту надпись здесь
Статью не читай @ комментарий пиши.
зануда_mode
Вы не правильно используете знак «коммерческое at», он по смыслу совсем для других целей.
Например:
мыло @ сервер
5А @ 220v
130W @ 25℃
зануда_mode_off
P.S. как и многие другие. Что за мода пошла?
Спасибо, не знал про это. Но всё равно не могу воспринимать символ собаки как-то по-другому. Я бы лучше слэш использовал.
Не можете или не хотите?
Слеш в Интернете уже используется — в значении, близком к «или».
Вот чёрт! Тогда вспомним bash и используем два амперсанда, так логика будет соблюдена. Да пусть даже один.
Не совсем. Чтобы логика была соблюдена, нужна скорее точка с запятой. «И» подразумевает одновременное выполнение условий.
Так здесь и подразумевается одновременное выполнение условий.
НЛО прилетело и опубликовало эту надпись здесь
Картинка к посту придумана не мной. Собственно, изначальной идеей и было, чтобы в языке не нужно было переключать раскладку. Поэтому {} и [] в языке не используются.
Это смотря какая раскладка.
Да, все равно надо будет переключаться.
В ЯГТР не используются [] и {}, так что переключаться не обязательно. Другое дело, что если нужны будут атрибуты (например для \рис) и стили, то тут да — фактически придется писать код на HTML.
Вот это поворот. Теперь я знаю что обратный слэш и в русской раскладке можно набрать. Правда зачем…
Ничего особо нового. В студенческие времена часто писал на vb6, используя всё на русском — и переменные, и функции. Смотрелось прикольно, но только и всего. Никакой разницы, на каком языке называть функции, переменные, и т.п. — только неудобства для зарубежных разработчиков (всё же английский знают больше народа, нежели русский, хоть сколько бы я ни был патриотом). ИМХО, для программирования лучше просто не использовать вовсе какой-либо второй язык — только английский. Потому что надо отделять код от данных, а данные уже забивать можно на каком угодно языке. Правда, для небольших проектов это не оправданно, но там и потери на переключение раскладки будут небольшими — не сравнить с изобретением нового html.
ИМХО, для программирования лучше просто не использовать вовсе какой-либо второй язык — только английский.

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

Не спасет именование функций латиницей, код подразумевает задачи, комментарии, документацию, обратную связь. Если нет поддержки по всем фронтам, то это все равно не интернациональный проект, а значит, аргумент отклоняется.
На самом деле язык создавался just for fun.
Важнее было прокачать навыки программирования, а тут просто попалась на глаза интересная идея.
Надо было в теги добавить «ненормальное программирование».
Сделано.
Вроде бы с аргументами командной строки в питоне все просто — модуль, кажется, argparse. В документации хорошие и понятные примеры.

С появлением docopt, остальное кажется монструозным.

Есть минус: не включено в стандартный комплект.

Docopt однофайловый, можно просто скопировать к себе в проект.

А как насчет экранирования, например когда код на подобии такого:
\пар(Этот текст ( будет \ж(полужирным), а этот - \к(курсивом))
\пар(Этот текст \пар( будет \ж(полужирным), а этот - \к(курсивом))


Для создания редактора с подсветкой синтаксиса ЯГТР, можно использовать библиотеку wx там есть достаточно мощный редактор кода Scintilla:


А это пример кода с аналогичным функционалом на lua:
utf8=require'lua-utf8'

s=[[\пар(Этот текст будет \ж::class='bold'::(полужирным), а этот - \к(курсивом)\изо`align='center'`)]]


--хеш для тегов с телом
local complex_tags = {
	['пар']='p', ['ж']='b', ['к']='i'
}

--хеш для тегов без тела
local simple_tags = {
	['бр']='br', ['изо']='img'
}

--паттерны для разбора тегов, без начального символа "\" 
local complex_tag_pattern = [[:?:?([^:%)%(\]*):?:?(%b())]]
local simple_tag_pattern = [[:?:?([^:%)%(\]*):?:?]]

--рекурсивная функция в которой все и происходит 
local function pp(str)
	--обрабатываем теги без тела
	for ya_tag, html_tag in pairs(simple_tags) do
		str=utf8.gsub(str, [[\]]..ya_tag..simple_tag_pattern,
			function(attrs)
				local s = '<'..html_tag
				if #attrs>0 then s=s..' '..attrs end
				s=s..'>'
				return s
		end)
	end

	--тоже но уже для тегов с телом
	for ya_tag, html_tag in pairs(complex_tags) do
		str=utf8.gsub(str, [[\]]..ya_tag..complex_tag_pattern,
			function(attrs, body)
				local s = '<'..html_tag
				if #attrs>0 then s=s..' '..attrs end
				s=s..'>'..pp(utf8.sub(body, 2, -2))..'</'..html_tag..'>'
				return s
		end)
	end

	return str
end

--выводим результат
print(pp(s))

А как насчет экранирования, например когда код на подобии такого:
\пар(Этот текст ( будет \ж(полужирным), а этот — \к(курсивом))

Для экранирования используется \ — так, чтобы ввести символ "(" нужно писать \(

\пар(Этот текст \пар( будет \ж(полужирным), а этот — \к(курсивом))

А в данном случае компилятор выдаст ошибку — для внешнего \пар не будет найдена закрывающая ")".

По поводу примера: с lua не знаком, ничего сказать не могу. Но могу сказать, что сначала тоже думал использовать регулярные выражения, но не осилил.
случайно, не знакомый автора этой статьи?
Нет, эта статья раньше мне не попадалась.
осталось объединить эти две статьи в «если бы React и JSX сделали в СССР»
А почему не на Brainfuck?
Просто потому что хотел научиться программировать на Python.
Ты слуцайно не фанат 1C?
Нет, не фанат.
НЛО прилетело и опубликовало эту надпись здесь
Всё-таки Алгол — язык программирования, а HTML — язык разметки.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
поздравляю, вы что-то написали в комментарии.
На самом деле меня уже давно мучает вопрос замены тега . Ведь сейчас визуализация страницы занимает гораздо большее время, чем её скачивание. Всё из-за рекурсивных пересчётов позиций элементов и блоков.
Можно, например, взять другую систему выравнивания. К примеру Android. Но только меня беспокоит, что требования заказчиков превратят лаконичную нерекурсивную разметку обратно в Html.
замены тега
<html>
НЛО прилетело и опубликовало эту надпись здесь
В том смысле, что сиблинги блока и внутренний контент влияют на него самого
Ну давайте не забывать, что во время «отрисовки» страницы всё ещё докачиваются картинки, посторонний мусор и выполняются скрипты. Когда у тебя 40 метров картинок и 5 метров скриптов (и лишь за 1 из них стоит поблагодарить рекламу) для отображения сайт-визитки, то как-то не удивительно, что отрисовка этой всей бодяги занимает больше, чем скачивание.

Насчет pre можно использовать подход LaTeX, ну или похожий на него


\начало пфт
Текст Предварительно Форматированного Текста
Следующая строка
\конец пфт
Тогда выбивается из системы: команда в общем случае выглядит \команда::аргументы::(текст), а подход латеха сильно отличается.

Ну если стандарт позволит то можно попробовать так:


\пфт(
Многострочный текст,
здесь

monospace
)
На самом деле, проблема немного в другом зарыта. Так как символ ")" используется в качестве «закрывателя» команд, то для его вывода на экран используется последовательность \).
Вопрос следующий: если я захочу вставить символ ")" внутри команды \пфт, мне ставить перед ним "\"? Если да, то какой же это преформатированный текст? А если нет, то как определить конец команды?

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

На самом деле, такая команда фактически уже есть: ведь текст между :: и :: пока вставляется в документ как есть. Можно придумать аналог, но это выбивается из общей картины. Кстати, строго говоря, вариант
\начало пфт
Текст Предварительно Форматированного Текста
Следующая строка
\конец пфт
— это почти то же самое, что и пара ::, только здесь начало и конец отличаются, а случае с ::, они являются признаком и начала, и конца.
Проиграл с цвет «военноморсокгофлота», спасибо.)
Теперь одинэсники тоже смогут верстать? :-)
Python — хороший язык. Но и идею русификации тоже далеко откладывать не надо, потому как она может стать снова актуальной. Учитывая курс на импортозамещение, русификация ЯП становится вполне логичной. Да и традиции имеются.

image
Помню, захотелось мне в далеком 1998 году тоже свой язык для своего фидошного проекта. Т.к. я ничего не знал, книжек не было, учителей тоже, а проект был изначально вообще под DOS, то я просто случайно нашел в Borland Pascal валидаторы (по сути regexp-ы) и с их помощью вполне успешно написал свой.овно-язычок.
Он даже в байт-код (я такого слова еще не знал) компилировался, чтобы не разбирать его при каждом запуске.
Даже скриптов понаписывал на нем. Эх, если бы я тогда учился где-то у нормальных преподов, может и вышел бы из меня толк.

Целые трактаты писал, было время и желание, сейчас так делать уже лень :-)
https://github.com/hiddenman/pointmaster/blob/master/trunk/utf8/script/example.pms
Автор «адаптировал» к русской раскладке формат RTF =)
Сейчас посмотрел пример на Википедии:
{\rtf1
Привет!
\par
{\i Это} некий
отформатированный {\b текст}.\par
}

Даже не знаю, как по мне — общего только то, что команда начинается с символа \. А вообще, выше правильно заметили, что синтаксис больше похож на латех.
Я бы тебе руки оторвал за эту ересь, да еще и бесполезную…
Как гласит народная мудрость, «Не любо — не слушай, а врать не мешай».
Тем более, что лично для меня это было полезно.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации