LINUX.ORG.RU

русификация через КОИ-7

 ,


1

1

Всерьёз задумался о русификации A2 через КОИ-7

Плюсы:

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

  • достаточно поменять шрифты и разные функции типа isAlpha и проч

  • всякие там ЛС и ЦАТ сразу доступны - усилия по их локализации равны нулю!

  • доступ ко всем латиноязычным API и даже сразу мнемоники ассемблера:

ФОРК СПАВН ьмлхТТПрЕЯУЕСТ #ИНЦЛУДЕ СТДИО.Х
асх мож леа
  • оберон самоулучшается
процедуре модуле
  • шестнадатиричные числа: 0ь33абцдеф

Минусы

  • потом замучаешься делать нормально. Но что конкретно это обозначает, я пока не понял. Поэтому и существует эта тема.
★★★★★

оберон самоулучшается

Оберон сам не улучшится, оберон надо улучшать!

потом замучаешься делать нормально

Именно. Поэтому идея плохая. И тех, для кого предназначено программирование по-русски, оно в первую очередь и отпугнёт.

P.S. Это тебя сегодняшние мутации ников на ЛОРе вдохновили?

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

Ага. Более того, мне кажется, это всё произошло из-за сосиски:

Владимир (комментарий)

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

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

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

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 3)
Ответ на: комментарий от den73

Есть ведь ещё url-ы. Внезапно, без всякого пуникода и перерегистрации домена, возникает масса русскоязычных веб-адресов:

ЛИНУЬ.ОРГ.РУ ЫАНДЕЬ.РУ

Я бы, конечно, подумал ещё про яролит взад (линух.орг.ру, ыандех.ру), но за ним не стоит никакой традиции, а тут традиция примерно в полтора века, т.к. КОИ-7 восходит к морзянке.

Во всяком случае, мы так можем реализовать то преимущество, что в кириллице больше букв.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 2)
Ответ на: комментарий от hobbit

Оберон сам не улучшится, оберон надо улучшать!

В a2 и так уже заметно улучшенный оберон. Там есть перечисления, АСЫНЦ/АВАИТ, динамический тип аны и даже перегрузка операций (хотя последнюю я не уверен, что следует считать улучшением).

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 2)
Ответ на: комментарий от den73

Есть ещё и такой культурологический момент. Многие люди, которых я знаю, не знают английский (т.к. учили немецкий). Они смешно коверкают английские слова. А тут сразу возникает произношение, причём оно лучше, чем в первоисточнике. Потому что в русском языке по написанию слова почти точно понятно, как его произносит. Во всяком случае, гораздо лучше в английском.

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

Уважаемый, ты как рубашку снял?

Сказал человек с антропоморфной лошадью в кожаном белье на аватарке.

PPP328 ★★★★★
()
Ответ на: комментарий от deadplace
cat OberonLoader.c | iconv -f KOI-7 > `echo OberonLoader.c | iconv -f KOI-7`

оБЕРОНлОАДЕР.Ц

/* 
   г.ф. 31.01.2017

   лОАДЕР ФОР СТАТИЦАЛЛЫ ЛИНКЕД ОБЕРОН БИНАРИЕС.

   цОМПИЛЕ ЦОММАНД:
      ГЦЦ -М32 -С -о оБЕРОНлОАДЕР.Ц -ЛДЛ -О оБЕРОНлОАДЕР

      ГЦЦ -М64 -С -о оБЕРОНлОАДЕР.Ц -ЛДЛ -О оБЕРОНлОАДЕР


   тХЕ СТАТИЦАЛЛЫ ЛИНКЕД ОБЕРОН БИНАРЫ 'ОБЕРОН.БИН' ХАС ТО БЕ
   АППЕНДЕД ТО ТХИС ЛОАДЕР БЫ ТХЕ ФОЛЛОВИНГ а2-ЦОММАНД:

      уНИЬбИНАРЫ.бУИЛД ОБЕРОН.БИН ->  <ПРОГРАМ НАМЕ> Ч

*/
#ИНЦЛУДЕ <СТДЛИБ.Х>
#ИНЦЛУДЕ <СТДИО.Х>
#ИНЦЛУДЕ <ФЦНТЛ.Х>
#ИНЦЛУДЕ <СЫС/ТЫПЕС.Х>
#ИНЦЛУДЕ <СЫС/ММАН.Х>
#ИНЦЛУДЕ <СЫС/УИО.Х>
#ИНЦЛУДЕ <УНИСТД.Х>
#ИНЦЛУДЕ <СЫС/СТАТ.Х>
#ИНЦЛУДЕ <СТРИНГ.Х>
#ИНЦЛУДЕ <ДЛФЦН.Х>

#ДЕФИНЕ оФФСЕТ 16*1024	/* СТАРТПОС ОФ ТХЕ АППЕНДЕД ОБЕРОН БИНАРЫ */
#ДЕФИНЕ бЛКсИЗЕ 4*1024

ТЫПЕДЕФ ЖОИД (*оБЕРОНпРОЦ)();
ТЫПЕДЕФ ЖОИД *АДДР;
ТЫПЕДЕФ УНСИГНЕД ИНТ УИНТ;
ТЫПЕДЕФ УНСИГНЕД ЛОНГ УЛОНГ;

ТЫПЕДЕФ СТРУЦТ Ш  /* ЦФ. уНИЬ.*.гЛУЕ.мОД */
    /* оБЕРОН --> ЛОАДЕР: */
    ЦХАР ИДш24щ;		/* МУСТ МАТЦХ ЦОРЕид */
    ИНТ  ЦОДЕСИЗЕ;	
    ИНТ  РЕЛОЦАТИОНС;
    оБЕРОНпРОЦ ЕНТРЫ;		/* гЛУЕ.иНИТ0 */
    /* ЛОАДЕР --> оБЕРОН: */
    АДДР *ДЛОПЕНАДДР;
    АДДР *ДЛЦЛОСЕАДДР;
    АДДР *ДЛСЫМАДДР;
    ИНТ  *АРГЦ;
    АДДР *АРГЖ;
    АДДР *ЕНЖ;
    АДДР *ЦОУТ;
Щ *хЕАДЕР;

#ИФ ДЕФИНЕД(ъълп64ъъ) ЭЭ ДЕФИНЕД(ълп64)
   ЦХАР *ЦОРЕид = "оБЕРОН64г.БИНАРЫ";	/* ЦФ. уНИЬ.гЛУЕ.мОД */
#ЕЛСЕ
   ЦХАР *ЦОРЕид = "оБЕРОН32г.БИНАРЫ";	/* ЦФ. уНИЬ.гЛУЕ.мОД */
#ЕНДИФ

АДДР ХЕАП;
УИНТ ХЕАПСИЗЕ;
ИНТ ФД;

ЖОИД ЦОУТ( ЦХАР Ц ) Ш
   ЦХАР БУФш8щ;
   БУФш0щ = Ц;
   ВРИТЕ( 1, &БУФ, 1 );
Щ

УИНТ рЕАДиНТЕГЕР( ) Ш
   УНИОН Ш
      ЦХАР БУФш4щ;
      УИНТ И;
   Щ У;
   РЕАД( ФД, &У.БУФ, 4 );
   РЕТУРН (У.И);
Щ


ЖОИД рЕЛОЦАТЕ( УИНТ РЕЛОЦАТИОНС ) Ш
   АДДР *А;
   УИНТ И;

   ФОР (И=0; И<РЕЛОЦАТИОНС; И++) Ш
      А = ХЕАП + рЕАДиНТЕГЕР();
      *А += (УЛОНГ)ХЕАП;
   Щ
Щ


ЦХАР *ВХИЦХъПАТХ(ЦОНСТ ЦХАР *НАМЕ) Ш

   ЦХАР *ТНАМЕ, *ТОК, *ПАТХ;

   ПАТХ = СТРДУП(ГЕТЕНЖ("патх"));
   ИФ (нулл == ПАТХ) РЕТУРН нулл;

   ТОК = СТРТОК(ПАТХ, ":");
   ВХИЛЕ (ТОК) Ш
      ТНАМЕ = МАЛЛОЦ(СТРЛЕН(ТОК) + 2 + СТРЛЕН(НАМЕ));
      СПРИНТФ(ТНАМЕ, "%С/%С", ТОК, НАМЕ);

      ИФ (0 == АЦЦЕСС(ТНАМЕ, ьъок)) Ш ФРЕЕ(ПАТХ);  РЕТУРН ТНАМЕ; Щ

      ФРЕЕ(ТНАМЕ);
      ТОК = СТРТОК(нулл, ":");
   Щ
   ФРЕЕ(ПАТХ);
   РЕТУРН нулл;
Щ



ИНТ МАИН( ИНТ АРГЦ, ЦХАР *АРГЖшщ, ЦХАР *ЕНЖшщ ) Ш
   ИНТ Р, Н, БИНСИЗЕ, РЕЛОЦАТИОНС;
   СИЗЕъТ ФСИЗЕ;
   СТРУЦТ СТАТ СБ;
   хЕАДЕР ХЕАДЕР;
   ЦХАР *ПАТХ, *БУФ;

   ФД = ОПЕН( *АРГЖ, оърдонлы );
   ИФ (ФД < 0) Ш
      /* ФИНД МЫСЕЛФ ИН патх */
      ПАТХ = ВХИЦХъПАТХ(*АРГЖ);
      ФД = ОПЕН(ПАТХ, оърдонлы);
   Щ
   Р = ФСТАТ( ФД, &СБ );
   ИФ ( СБ.СТъСИЗЕ < оФФСЕТ+2048 ) Ш
      ФПРИНТФ( СТДЕРР, "%С: МИССИНГ АППЕНДЕД оБЕРОН БИНАРЫэН", *АРГЖ );
      ЕЬИТ( 2 );
   Щ
   Р = ЛСЕЕК( ФД, оФФСЕТ, сеекъсет );
   БУФ = МАЛЛОЦ( 512 );
   Н = РЕАД( ФД, БУФ, 256 );
   ХЕАДЕР = (хЕАДЕР)БУФ;
   ИФ (СТРЦМП(ХЕАДЕР->ИД, ЦОРЕид) != 0) Ш
      ФПРИНТФ( СТДЕРР, "ВРОНГ оБЕРОН ХЕАДЕРиД: ГОТ '%С', ЕЬПЕЦТЕД '%С'эН", ХЕАДЕР->ИД, ЦОРЕид );
      ЕЬИТ( 2 );
   Щ
   БИНСИЗЕ = ХЕАДЕР->ЦОДЕСИЗЕ;
   РЕЛОЦАТИОНС = ХЕАДЕР->РЕЛОЦАТИОНС;
   ФРЕЕ( БУФ );

   ХЕАПСИЗЕ = бЛКсИЗЕ;
   ВХИЛЕ (ХЕАПСИЗЕ < БИНСИЗЕ) ХЕАПСИЗЕ += бЛКсИЗЕ;

   Р = ЛСЕЕК( ФД, оФФСЕТ, сеекъсет );
   Р = ПОСИЬъМЕМАЛИГН( &ХЕАП, бЛКсИЗЕ, ХЕАПСИЗЕ );
   ИФ (МПРОТЕЦТ( ХЕАП, ХЕАПСИЗЕ, протъреадЭпротъвритеЭпротъеьец) != 0)
      ПЕРРОР("МПРОТЕЦТ");
   Н = РЕАД( ФД, ХЕАП, БИНСИЗЕ );

   рЕЛОЦАТЕ( РЕЛОЦАТИОНС );

   ХЕАДЕР = (хЕАДЕР)ХЕАП;
   *(ХЕАДЕР->ДЛОПЕНАДДР) = ДЛОПЕН;
   *(ХЕАДЕР->ДЛЦЛОСЕАДДР) = ДЛЦЛОСЕ;
   *(ХЕАДЕР->ДЛСЫМАДДР) = ДЛСЫМ;
   *(ХЕАДЕР->АРГЦ) = АРГЦ;
   *(ХЕАДЕР->АРГЖ) = АРГЖ;
   *(ХЕАДЕР->ЕНЖ)  = ЕНЖ;
   *(ХЕАДЕР->ЦОУТ) = ЦОУТ;

   ХЕАДЕР->ЕНТРЫ();
   РЕТУРН (0);
Щ
den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

То же для Trace.Mod:

модуле тРАЦЕ;	(** аутхор "ФН"; пурпосе "лОВ-ЛЕЖЕЛ ТРАЦЕ ОУТПУТ БАСЕД ОН кЕРНЕЛлОГ"; *)

импорт сыстем;

тыпе
	цХАРпРОЦ*= процедуре (Ц:цхар);
жар
	цХАР*: цХАРпРОЦ;
	цОЛОР*: процедуре (Ц: сигнед8);

процедуре еНТЕР*;
бегин Шунцооператиже, унцхецкедЩ
енд еНТЕР;

процедуре еЬИТ*;
бегин Шунцооператиже, унцхецкедЩ лН;
енд еЬИТ;

(** сЕНД ТХЕ СПЕЦИФИЕД ЦХАРАЦТЕРС ТО ТХЕ ТРАЦЕ ОУТПУТ (ЦФ. сТРЕАМС.сЕНДЕР). *)
процедуре сЕНД*(цонст БУФ: арраы оф цхар; ОФС, ЛЕН: сизе; ПРОПАГАТЕ: боолеан; жар РЕС: интегер);
бегин Шунцооператиже, унцхецкедЩ инц (ЛЕН, ОФС); ассерт (ЛЕН <= лен (БУФ)); вхиле ОФС # ЛЕН до цХАР (БУФшОФСщ); инц (ОФС); енд; РЕС := 0;
енд сЕНД;

(** сКИП ТО ТХЕ НЕЬТ ЛИНЕ ОН ТРАЦЕ ОУТПУТ. *)
процедуре лН*;
бегин Шунцооператиже, унцхецкедЩ цХАР (0дь); цХАР (0аь);
енд лН;

(** вРИТЕ А СТРИНГ ТО ТХЕ ТРАЦЕ ОУТПУТ. *)
процедуре сТРИНГ* (цонст С: арраы оф цхар);
жар И: сизе; Ц: цхар;
бегин Шунцооператиже, унцхецкедЩ фор И := 0 то лен (С) - 1 до Ц := СшИщ; иф Ц = 0ь тхен ретурн енд; цХАР (Ц) енд;
енд сТРИНГ;

(** вРИТЕ А СТРИНГ ТО ТХЕ ТРАЦЕ ОУТПУТ АНД СКИП ТО НЕЬТ ЛИНЕ. *)
процедуре сТРИНГлН* (цонст С: арраы оф цхар);
бегин Шунцооператиже, унцхецкедЩ сТРИНГ (С); лН;
енд сТРИНГлН;

(** вРИТЕ А ЦХАРАЦТЕР. *)
процедуре иНТ* (Ь: сигнед64; В: сизе);
жар И: сизе; Ь0: сигнед64; А: арраы 21 оф цхар;
бегин Шунцооператиже, унцхецкедЩ
	иф Ь < 0 тхен
		иф Ь = мин (сигнед64) тхен
			дец (В, 20);
			вхиле В > 0 до цХАР (' '); дец (В) енд;
			сТРИНГ ("-9223372036854775808");
			ретурн
		елсе
			дец (В); Ь0 := -Ь
		енд
	елсе
		Ь0 := Ь
	енд;
	И := 0;
	репеат
		АшИщ := цхр (Ь0 мод 10 + 30х); Ь0 := Ь0 диж 10; инц (И)
	унтил Ь0 = 0;
	вхиле В > И до цХАР (' '); дец (В) енд;
	иф Ь < 0 тхен цХАР ('-') енд;
	репеат дец (И); цХАР (АшИщ) унтил И = 0
енд иНТ;

процедуре бООЛЕАН* (Ь : боолеан);
бегин Шунцооператиже, унцхецкедЩ иф Ь тхен сТРИНГ ("труе") елсе сТРИНГ ("фалсе") енд
енд бООЛЕАН;

(** вРИТЕ "Ь" АС А ДЕЦИМАЛ НУМБЕР ВИТХ А ПОВЕР-ОФ-ТВО МУЛТИПЛИЕР (к, м ОР г), ФОЛЛОВЕД БЫ "СУФФИЬ". "В" ИС ТХЕ ФИЕЛД ВИДТХ, ЕЬЦЛУДИНГ "СУФФИЬ". *)
процедуре иНТсУФФИЬ* (Ь: сигнед64; В: сизе; цонст СУФФИЬ: арраы оф цхар);
цонст к = 1024; м = к*к; г = к*м;
жар МУЛТ: цхар;
бегин Шунцооператиже, унцхецкедЩ
	иф Ь мод к # 0 тхен
		иНТ (Ь, В)
	елсе
		иф Ь мод м # 0 тхен МУЛТ := 'к'; Ь := Ь диж к
		елсиф Ь мод г # 0 тхен МУЛТ := 'м'; Ь := Ь диж м
		елсе МУЛТ := 'г'; Ь := Ь диж г
		енд;
		иНТ (Ь, В-1); цХАР (МУЛТ)
	енд;
	сТРИНГ (СУФФИЬ)
енд иНТсУФФИЬ;

(**
	вРИТЕ АН ИНТЕГЕР ИН ХЕЬАДЕЦИМАЛ РИГХТ-ЙУСТИФИЕД ИН А ФИЕЛД ОФ АТ ЛЕАСТ абс(В) ЦХАРАЦТЕРС.
	иФ В < 0 тхен В ЛЕАСТ СИГНИФИЦАНТ ХЕЬ ДИГИТС ОФ Ь АРЕ ВРИТТЕН (ПОССИБЛЫ ИНЦЛУДИНГ ЛЕАДИНГ ЗЕРОС)
*)
процедуре хЕЬ*(Ь: сигнед64; В: сизе );
жар И: сизе;
	БУФ: арраы 2*сизеоф(сигнед64)+2 оф цхар;
	НЕГ: боолеан;
	Ц: сигнед64;
бегин Шунцооператиже, унцхецкедЩ
	иф В >= 0 тхен
		И:= 0;
		иф Ь < 0 тхен НЕГ := труе; Ь :=-Ь елсиф Ь=0 тхен БУФ := "0" елсе НЕГ := фалсе енд;
		И := 0;
		репеат
			Ц := Ь мод 10х;
			иф Ц < 10 тхен БУФшИщ := цхр(Ц+орд("0")) елсе БУФшИщ := цхр(Ц-10+орд("а")) енд;
			Ь := Ь диж 10х;
			инц(И);
		унтил (И = 2 * сизеоф(сигнед64)) ор (Ь=0);
		иф Ц > 9 тхен БУФшИщ := "0"; инц(И) енд;
		иф НЕГ тхен БУФшИщ := "-"; инц(И) енд;
		вхиле(В > И) до цХАР(" "); дец(В); енд;
		репеат дец(И); цХАР(БУФшИщ); унтил И=0;
	елсе
		В := -В;
		вхиле(В>2*сизеоф(сигнед64)) до
			цХАР(" "); дец(В);
		енд;
		БУФшВщ := 0ь;
		репеат
			дец(В);
			Ц := Ь мод 10х;
			иф Ц <10 тхен БУФшВщ := цхр(Ц+орд("0")) елсе БУФшВщ := цхр(Ц-10+орд("а")) енд;
			Ь := Ь диж 10х;
		унтил В = 0;
		сТРИНГ(БУФ);
	енд;

енд хЕЬ;

(** вРИТЕ "Ь" АС А ХЕЬАДЕЦИМАЛ АДДРЕСС *)
процедуре аДДРЕСС* (Ь: аддресс);
бегин Шунцооператиже, унцхецкедЩ
	хЕЬ(Ь,-2*сизеоф(аддресс));
енд аДДРЕСС;

(** вРИТЕ "Ь" АС А СИЗЕ *)
процедуре сИЗЕ* (Ь: сизе);
бегин Шунцооператиже, унцхецкедЩ
	иНТ(Ь,0);
енд сИЗЕ;

(** вРИТЕ "Ь" АС А ХЕЬАДЕЦИМАЛ НУМБЕР. "В" ИС ТХЕ ФИЕЛД ВИДТХ. аЛВАЫС ПРИНТС 16 ДИГИТС. *)
процедуре хиНТхЕЬ* (Ь: сигнед64; В: сизе);
бегин Шунцооператиже, унцхецкедЩ хЕЬ (Ь, В);
енд хиНТхЕЬ;

(** вРИТЕ А БЛОЦК ОФ МЕМОРЫ ИН ХЕЬ. *)
процедуре мЕМОРЫ* (АДР: аддресс; СИЗЕ: сизе);
жар И, Й: аддресс; ЦХ: цхар;
бегин Шунцооператиже, унцхецкедЩ
	СИЗЕ := АДР+СИЗЕ-1;
	фор И := АДР то СИЗЕ бы 16 до
		аДДРЕСС (И); цХАР (' ');
		фор Й := И то И+15 до
			иф Й <= СИЗЕ тхен
				сыстем.гет (Й, ЦХ);
				цХАР(' ');
				хЕЬ (орд (ЦХ), -2)
			елсе
				цХАР (' ');
				цХАР (' ');
				цХАР (' ');
			енд
		енд;
		цХАР (' '); цХАР (' ');
		фор Й := И то И+15 до
			иф Й <= СИЗЕ тхен
				сыстем.гет (Й, ЦХ);
				иф (ЦХ < ' ') ор (ЦХ >= цхр (127)) тхен ЦХ := '.' енд;
				цХАР (ЦХ)
			енд
		енд;
		лН
	енд;
енд мЕМОРЫ;

(* вРИТЕ БАСИЦ СТАЦК ФРАМЕ ИНФОРМАТИОН *)
процедуре сТАЦКфРАМЕС- (СКИП, ЦОУНТ, СИЗЕ: сизе);
жар ФРАМЕ ШунтрацедЩ: поинтер ШунсафеЩ то рецорд ДЕСЦРИПТОР, ПРЕЖИОУС, ЦАЛЛЕР, ПАРАМЕТЕРС: аддресс енд;
бегин Шунцооператиже, унцхецкедЩ
	ФРАМЕ := аддресс оф ФРАМЕ + сизе оф аддресс;
	вхиле СКИП # 0 до
		ФРАМЕ := ФРАМЕ.ПРЕЖИОУС;
		иф ФРАМЕ = нил тхен ретурн енд;
		дец (СКИП);
	енд;
	вхиле ЦОУНТ # 0 до
		аДДРЕСС (ФРАМЕ.ЦАЛЛЕР); цХАР (':'); лН;
		иф ФРАМЕ.ПРЕЖИОУС = нил тхен ретурн енд;
		иф ФРАМЕ.ПРЕЖИОУС - аддресс оф ФРАМЕ.ДЕСЦРИПТОР <= СИЗЕ тхен
			мЕМОРЫ (аддресс оф ФРАМЕ.ПАРАМЕТЕРС, ФРАМЕ.ПРЕЖИОУС - аддресс оф ФРАМЕ.ДЕСЦРИПТОР);
		елсиф СИЗЕ # 0 тхен
			мЕМОРЫ (аддресс оф ФРАМЕ.ПАРАМЕТЕРС, СИЗЕ); сТРИНГ ("..."); лН;
		енд;
		дец (ЦОУНТ); ФРАМЕ := ФРАМЕ.ПРЕЖИОУС;
	енд;
	вхиле ФРАМЕ.ПРЕЖИОУС # нил до инц (ЦОУНТ); ФРАМЕ := ФРАМЕ.ПРЕЖИОУС енд;
	иф ЦОУНТ # 0 тхен цХАР ('+'); иНТ (ЦОУНТ, 0); лН; енд;
енд сТАЦКфРАМЕС;

(** вРИТЕ А БУФФЕР ИН ХЕЬ. *)
процедуре бУФФЕР* (цонст БУФ: арраы оф цхар; ОФС, ЛЕН: сизе);
бегин Шунцооператиже, унцхецкедЩ мЕМОРЫ (аддрессоф (БУФшОФСщ), ЛЕН)
енд бУФФЕР;

(** вРИТЕ БИТС (ОФС..ОФС+Н-1) ОФ Ь ИН БИНАРЫ. *)
процедуре бИТС* (Ь: сет; ОФС, Н: сизе);
бегин Шунцооператиже, унцхецкедЩ
	репеат
		дец (Н);
		иф (ОФС+Н) ин Ь тхен цХАР ('1') елсе цХАР ('0') енд
	унтил Н = 0
енд бИТС;

процедуре сЕТ*(Ь: сет);
жар ФИРСТ: боолеан; И: сизе;
бегин
	ФИРСТ := труе;
	цХАР("Ш");
	фор И := 0 то маь(сет) до
		иф И ин Ь тхен
			иф ЧФИРСТ тхен цХАР(",") елсе ФИРСТ := фалсе енд;
			иНТ(И,1);
		енд;
	енд;
	цХАР("Щ");
енд сЕТ;


(** цОЛОРС *)
процедуре бЛУЕ*;
бегин Шунцооператиже, унцхецкедЩ цОЛОР (9);
енд бЛУЕ;

процедуре гРЕЕН*;
бегин Шунцооператиже, унцхецкедЩ цОЛОР (10);
енд гРЕЕН;

процедуре рЕД*;
бегин Шунцооператиже, унцхецкедЩ цОЛОР (12);
енд рЕД;

процедуре ыЕЛЛОВ*;
бегин Шунцооператиже, унцхецкедЩ цОЛОР (14);
енд ыЕЛЛОВ;

процедуре дЕФАУЛТ*;
бегин Шунцооператиже, унцхецкедЩ цОЛОР (7);
енд дЕФАУЛТ;

процедуре нУЛЛцХАР(Ц: цхар);
бегин Шунцооператиже, унцхецкедЩ
енд нУЛЛцХАР;

процедуре нУЛЛцОЛОР(Ц: сигнед8);
бегин Шунцооператиже, унцхецкедЩ
енд нУЛЛцОЛОР;

процедуре иНИТ*;
бегин Шунцооператиже, унцхецкедЩ
	цХАР := нУЛЛцХАР;
	цОЛОР := нУЛЛцОЛОР;
енд иНИТ;


(*
бегин
	цХАР := нУЛЛцХАР;
	цОЛОР := нУЛЛцОЛОР;
	*)
енд тРАЦЕ.

Ты сам попробуй вставь код - он сегодня сам преобразуется.

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

Первый косяк KOI-7 сразу проявился - превращение фигурных скобок в Ш и Щ.

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

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

stasolog
()

Не знаю, что такое A2. KOI-7 никто не использует, а если вы хотите выпендриваться, то для этого не нужны советы. Для текстовых файлов и сообщений предпочтительная кодировка UTF-8 (внутреннее пркеставление строк в языке программирования бывает UTF-16, чтобы символы имели одинаковое число байт).

Оберон (всех сортов) давно не существует и никогда всерьёз не существовал. Нельзя улучшить несуществующее.

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

До тех пор пока они остаются для 12-летних девочек - ничего. Когда их начинают одевать по BDSM - имею.

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

Да, неувязочка. И восклицательный знак выглядит как попытка завысить степень уверенности в своей вменяемости :)

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

оберон самоулучшается

Cхемка тоже ничего так становится

(ДЕФИНЕ (ОДД)
  (ЛЕТ ((Ц (РЕАД-ЦХАР)))
    (ИФ (ЦХАР-АЛПХАБЕТИЦ? Ц)
      (ЛЕТ ((Р (ОДД)))
        (ВРИТЕ-ЦХАР Ц)
        Р)
      (ЛАМБДА () (ВРИТЕ-ЦХАР Ц) (ЦХАР=? Ц #э.)))))

(ДЕФИНЕ (ЕЖЕН)
  (ЛЕТ ((Ц (РЕАД-ЦХАР)))
    (ВРИТЕ-ЦХАР Ц)
    (ИФ (ЦХАР-АЛПХАБЕТИЦ? Ц)
      (ЕЖЕН)
      (ЦХАР=? Ц #э.))))

(ЛЕТ ЛООП ((И #Ф))
  (ИФ (ИФ И ((ОДД)) (ЕЖЕН))
    (ЕЬИТ)
    (ЛООП (НОТ И))))
Princesska ★★★★
()
Ответ на: комментарий от Princesska

и окамл

ЛЕТ ИСъАЛПХА Ц =
  Ц >= 'А' && Ц <= 'З' ЭЭ
  Ц >= 'а' && Ц <= 'з'

ЛЕТ РЕЦ ОДД () =
  ЛЕТ Ц = ИНПУТъЦХАР СТДИН ИН
  ИФ ИСъАЛПХА Ц
  ТХЕН (ЛЕТ Е = ОДД () ИН ПРИНТъЦХАР Ц; Е)
  ЕЛСЕ (Ц)

ЛЕТ РЕЦ ЕЖЕН () =
  ЛЕТ Ц = ИНПУТъЦХАР СТДИН ИН
  ИФ ИСъАЛПХА Ц
  ТХЕН (ПРИНТъЦХАР Ц; ЕЖЕН ())
  ЕЛСЕ ПРИНТъЦХАР Ц

ЛЕТ РЕЖъОДДъВОРДС () =
  ВХИЛЕ ТРУЕ ДО
    ЕЖЕН ();
    ПРИНТъЦХАР (ОДД ())
  ДОНЕ

ЛЕТ () =
  ТРЫ РЕЖъОДДъВОРДС ()
  ВИТХ еНДъОФъФИЛЕ -> ()
Princesska ★★★★
()
Ответ на: комментарий от hateyoufeel

Через пять лет посмотрим, а пока считается действительной.

Dark_SavanT ★★★★★
()

Ден. Кончай давай. Твоя цель программирование на кирилице. Как я понял другие письменности кроме латиницы тебя не интересуют.

  • 1 Бери utf-8 и будет сразу совместимость со всем миром
  • 2 Бери uint16_t и будет латиница и кирилица и срать на всё остальное. Захардкорь два словаря если надо. Пусть мир под тебя прогибается =)

А сами кодовые таблицы пусть будут просто тупо таблицами и не иметь отношения к твоим деяниям от слова никакого. Из них нужно просто чимволы брать на отрисовку, фсё. Более о них думать не надо.

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

Полумеры, надо писать сразу по русски код.

достаточно поменять шрифты и разные функции типа isAlpha и проч

Инварианты, усложнение, энтропия. В топку. Нужно взять пункт 2. Иначе будет ещё один ад locale.h и вообще локалей.

всякие там ЛС и ЦАТ сразу доступны - усилия по их локализации равны нулю!

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

доступ ко всем латиноязычным API и даже сразу мнемоники ассемблера (далее текст типа кода) … шестнадатиричные числа

Инородно.

Вместо подгонки русского языка под похожесть напечатывания латиницы лучше продумать

  • 1 Русские мнемоники для ассембелра
  • 2 Русские базовые ключевые слова языка (твоего?)

Типа асм + с.


__ассемблер__(".код16\n");
__ассемблер__("перейти $0x0000, $исполнить\n");

целое исполнить()
{
     __ассемблер__ __общедоступно__ ("переместить_Б2  $'Л'  ,%регистр_A2\n"); // Б-байт 2-число байтов
     __ассемблер__ __общедоступно__ ("переместить_Б1 $0х0д , %регистр_A1\n"); // А-тип регистра 1/2 разрядность регистра
     __общедоступно__ ("целое $0x10\n");

     __ассемблер__ __общедоступно__ ("переместить_Б2  $'О'  ,%регистр_A2\n");
     __ассемблер__ __общедоступно__ ("переместить_Б1 $0х0д , %регистр_A1\n");
     __общедоступно__ ("целое $0x10\n");

     __ассемблер__ __общедоступно__ ("переместить_Б2  $'Р'  ,%регистр_A2\n");
     __ассемблер__ __общедоступно__ ("переместить_Б1 $0х0д , %регистр_A1\n");
     __общедоступно__ ("целое $0x10\n");

    вернуть 0;
} 

Но если уж как то лучше как-то так чем

ФОРК СПАВН ьмлхТТПрЕЯУЕСТ #ИНЦЛУДЕ СТДИО.Х

отделить возродить чёбля? #подключить<вводвывод.п>

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от den73

ТОК = СТРТОК(ПАТХ, «:»); :D

Шунцооператиже, унцхецкедЩ

Их бинШварц ТОлебен ИзохириРИБЕН шунцшвале ишцвай трибините! ЯяЯя!!! :D

рЕЛОЦАТЕ( РЕЛОЦАТИОНС );

Релоцате рилоцатинос, всех релоцатинос релоцате срочна!

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Твоя цель программирование на кирилице. Как я понял другие письменности кроме латиницы тебя не интересуют.

Я и сам не сразу заметил, но цели две: программирование на русском языке и расширение использования кириллицы.

В A2 я насчитал, грубо говоря, 90 тыс слов: http://вече.программирование-по-русски.рф/viewtopic.php?f=5&t=219

И как ты мне предлагаешь в одно лицо внедрять кириллицу?

Ясно, что нужна некоторая поэтапность. Когда начинаешь думать про это, оказывается, что всё связано между собой в клубок, и фиг знает, за какую ниточку нужно начинать тянуть. Так что вариант типа КОИ-7 я рассматриваю совершенно всерьёз как одну из возможных ниточек.

Меня интересует другая письменность, но это не так приоритетно. Цели и ограничения таковы:

  • кириллица должна стать first-class citizen, должна быть применима для именования любых сущностей. При переходе к любому более чем 8-битному внутреннему представлению это уже проблема. Т.к. строки везде и в куче мест они приводятся к байтам. Это я говорю про A2.
  • русские слова должны применяться как можно шире. При таком количестве это нельзя сделать одномоментно
  • всё должно продолжать работать. Значит, если подключается какое-то API на английском, оно должно не сломаться

И внезапно оказывается, что КОИ-7 всему удовлетворяет. Хотя я думал сделать отдельную 8-битную кодировку, типа КОИ-8, но без её дефектов (забыл уже, что там, то ли ё, то ли ещё какая-то проблемка есть).

КОИ-7, правда, не содержит латиницу вообще. Т.е. двухязычные тексты на ней не ввести никак. Но можно рассмотреть вариант 8-битной кодировки, которая КОИ-7, а латиница вся передвинута на новые места.

Совместимость со всем миром нахрен не нужна. Наоборот, нужна изоляция от всего мира. Т.к. вторая стратегическая цель - это сделать ПО с минимумом АНБ-шных закладок для использования внутри России. Чем больше трудностей возникнет при интеграции иностранного кода, тем лучше.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 3)
Ответ на: комментарий от LINUX-ORG-RU

2 Бери uint16_t и будет латиница и кирилица и срать на всё остальное. Захардкорь два словаря если надо. Пусть мир под тебя прогибается =)

В целом да, но это технически сложно осуществимо. А в A2 буквы пока что 8-битные. Вроде они используют utf-8 для внутреннего представления, это плохо.

Т.е. на первом этапе лучше придумать свою 8-битную кодировку. Тем более, что там уже вроде есть кодировка «Оберон», если я не путаю. А потом уже оценивать трудоёмкость перехода на 16-битные строки. Но нужно учесть, что система не покрыта автоматическими тестами. Сейчас вроде команда A2 этим занялась, но степень покрытия, видимо, пока что близка к нулю.

den73 ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

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

Самая лучшая среда - моноязычная. Локализованная «международная» среда на самом деле обычно англоязычная, т.к. в исходнике написано:

LC_msg_invalid_device - по-английски сразу понятно, о чём речь. А уже где-то в файле ресурса будет написано:

invalid_device
 en "invalid device"
 ru "неверное устройство"

Ясно, что чтение кода включает такую неприятную процедуру, как лазать по нескольким местам. Господа, в принципе, от неё освобождены, а для холопов она обязательна. Так что мой подход - это просто делать систему полностью на русском языке. Об использовании в других странах вообще речь пока не идёт. Когда она зайдёт - решения есть. Но они должны быть выгодны не другим странам, а нам.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 4)
Ответ на: комментарий от LINUX-ORG-RU

шестнадатиричные числа Инородно.

Не понял, как это инородно? Мы же не можем от них отказаться. Что делать?

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
12 марта 2021 г.
Ответ на: комментарий от den73

это всё произошло из-за сосиски:

Лол. А я ещё, когда узнал про эту твою затею, хотел потроллить и предложить заюзать КОИ-7. А ты, оказывается, про это уже сам допетрил, да ещё и мной вдохновившись. А сосиска-то и не в курсе.

cocucka ★★★★☆
()

КОИ-7

Это же издевательство над русский алфавитом и переделывание его под кальку английского. Вас уже завербовали западные спецслужбы?

01.04.20 15:04:12

Ой…

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

Я помню, на русских pdp-11 вместо кои-7 был эпичный хак: после управляющего символа ^o печатать русский алфавит (символами koi8 с обрезанным восьмым битом), после ^n - латинский. Семибитная многоязычная кодировка!

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

Хороший пост с хорошим заголовком со времени только лучше!
бНОПНЯ

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

Я помню, на русских pdp-11 вместо кои-7 был эпичный хак:

Ну вы даёте. Это и есть собственно koi-7. Самым идиотским хаком был radix50.

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

Я про смену наборов кодировки.

Но в сумме это и был koi-7. Этот «хак» же с телеграфа ещё тянется, русского там только именно какие кириллические буквы сопоставить, всё изобретение и заключалось только в том, что это было как-то типа «читаемо».

vodz ★★★★★
()

русификации

ФОРК СПАВН

Это ж всё равно не по-русски, ты что понимаешь под русификацией?

ya-betmen ★★★★★
()
Ответ на: комментарий от interrupted

я видел на мехмате в 1990-1993, «таск ацтиже» помню. Но вообще эта тема давно уже закрыта, я не понял, что тут за обсуждение началось.

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

В сумме это было 8 бит.

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

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

БК-0010 - это вроде система команд pdp-11, у нас в школе были. Хотя я там ничего на ассемблере не писал - не было информации о том, как это делать (у меня).

Вот тут люди до сих пор с ним балуются:

https://habr.com/ru/post/469117/

И ещё мне казалось, что процессоры эти до сих пор выпускаются, но я не уверен.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

Эта хрень была на терминалах ВТА-2000

Там вместо строчных латинских букв были БОЛЬШИЕ РУССКИЕ

Это был звиздец, т.к. софт был буржуйский (RTE-IV), то все сообщения были вида

«ЙОБ ТЕРМИНАТЕД» «MАЦРО CЦХЕДУЛЕД»

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