LINUX.ORG.RU

*GPL vs пермиссивные в отечественном программировании в 2025

 ,


0

0

Я понял, в чём проблема с A2 и ЯОС. Надо было раньше понять. Основные усилия находятся в закрытых форках. Да, меня предупреждали, но такой вот я тугодум. Проблема даже не в том, что концепция ЯОС как ОС на русском языке и не на языках из семейства Си мало кому интересна. Проблема в том, что точка старта низкая. Если бы проект был открыт, его качество в стартовой точке было бы выше. А так, по сути дела я начинал с помоечного открытого варианта, который уже на тот момент был хуже закрытых форков. Поскольку работа над закрытыми форками A2 продолжается и люди работают над этим за зарплату, отставание ЯОС от закрытой версии только увеличивается. Понятно, что уже поздно и специфика ЯОС как ватного проекта будет мешать и впредь, но в принципе, как сейчас поживают проекты ОС и тулчейнов под LGPL? Я видел обратный процесс, когда Racket переехал на пермиссивную лицензию. Golang изначально под пермиссивной лицензией. Clang стал за это время лучше конкурировать с gcc. Есть ли вообще истории успеха в этой области за последнее время, или движение GPL выродилось?

★★★★★

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

Вот пример кода из PostgreSQL

Без 100 грамм не разберёшься.

bool
inner_int_contains(ArrayType *a, ArrayType *b)
{
        int                     na,
                                nb;
        int                     i,
                                j,
                                n;
        int                *da,
                           *db;

        na = ARRNELEMS(a);
        nb = ARRNELEMS(b);
        da = ARRPTR(a);
        db = ARRPTR(b);

        i = j = n = 0;
        while (i < na && j < nb)
        {
                if (da[i] < db[j])
                        i++;
                else if (da[i] == db[j])
                {
                        n++;
                        i++;
                        j++;
                }
                else
                        break;                          /* db[j] is not in da */
        }

        return (n == nb);
}
anonymous
()
Ответ на: комментарий от monk

Проблема с теми же именами переменных и функций.

Термины предметной области не будут переводиться или однозначно переводятся.

Бухучет США и бухучет РФ - это разные предметные области.

Не надо пытаться изобретать один «язык» для разных предметных областей.

стандартной библиотекой

Любая, в том числе стандартная, библиотека - это DSL (язык предметной области). Которая определяет применимость такого языка (DSL) для предметной области.

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

А какую задачу решает ТС?

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

Давай на Go)

func f(a D) {
	const M = 12
	var i, p, g, r int
	var k R
	var u, w = s(M)

	u, w = lh(u, w, a)
	for {
		g, u, r, w = s0(u, w)
		for {
			p, i = r, g
			k = p1(a, g, r)
			for {
				i, p = ip(a, k, i, p)
				if c1(i, p) {
					p3(a, i, p)
					i, p = p2(i, p)
				}
				if c2(i, p) {
					break
				}
			}
			u, w = n(u, w, i, r)
			r = p
			if g >= r {
				break
			}
		}
		if d(u, w) == 0 {
			break
		}
	}
}
monk ★★★★★
()
Ответ на: комментарий от monk

func f(a D) {

Пошучу

Всё понятно:

  • в третьем цилиндре втулка не отрегулирована - раз;
  • и клапана не отрегулированы

Вообщем - «Здраствуй милая моя. Ты и растерялси».

Риторический вопрос к всем.
Почему такого рода кода весьма много в проектах?

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

А вот в атомной отрасли было поветрие переводить документацию по строящимся АЭС на английский.

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

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

Перевод на русский ничтожного 1 миллиона строк в A2 - это даже не 1% той работы, которую нужно выполнить, чтобы получить киберсуверенитет, но к которой никто не собирается приступать.

Как-то ускользает необходимость перевода для киберсуверенитета вообще.

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

А вообще, вы с den73 какие-то подозрительные, пытаетесь доказать ненужность изучение английского при том, что видите в Западе главного врага. А разве не должны мы врага знать как следует? Возможно ли это без знания вражеской мовы? Как вы языка допрашивать собираетесь, вояки? Или вы засланные казачки? Хотите под соусом патриотизма затормозить родной IТ-сектор и понизить общую грамотность в стране? Где там товарищ майор, саботажники в чате!

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

Не видя описания/кода вызываемых функций гадать можно долго.

А если бы имена функций были на английском или русском, тебе не пришлось бы гадать. Могу сейчас переписать этот же кусок на 1С и ты, не зная 1С, сразу поймёшь, что он делает (так как знаешь русский язык).

Процедура БыстраяСортировка(Массив)
  ГлубинаСтека = 12
  Стеки = ИнициализироватьСтекиГлубиной(ГлубинаСтека)
  Стеки = ДобавитьГраницыМассива(Стеки, Массив)
  Пока Истина Цикл
    ГраницыСтеки = ПолучитьГраницыСВершинСтеков(Стеки);
    Стеки.Левый = ГраницыСтеки.ЛевыйСтек;
    Стеки.Правый = ГраницыСтеки.ПравыйСтек;
    Пока Истина Цикл
      ТекущиеГраницы = Новый Структура;
      ТекущиеГраницы.Вставить("Левая", ГраницыСтеки.ЛеваяГраница;
      ТекущиеГраницы.Вставить("Правая", ГраницыСтеки.ПраваяГраница;
      ЗначениеСреднегоЭлемента = ПолучитьЗначениеЭлемента(Массив, ТекущиеГраницы);
      Пока Истина Цикл
        ТекущиеГраницы = СлеваНеМеньшеВыбранногоСправаНеБольшеВыбранного(Массив, ЗначениеСреднегоЭлемента, ТекущиеГраницы);
        Если ДиапазонНеПуст(ТекущиеГраницы) Тогда
          Поменять(Массив, ТекущиеГраницы.Левая, ТекущиеГраницы.Правая);
          ТекущиеГраницы = СжатьНа1(ТекущиеГраницы);
        КонецЕсли;
        Если ДиапазонПуст(ТекущиеГраницы) Тогда
          Прервать;
        КонецЕсли;
      КонецЦикла;
      Стеки = ДобавитьВСтекПриНеобходимости(Стеки, ТекущиеГраницы);
      ГраницыСтеки.ПраваяГраница = ТекущиеГраницы.Правая;
      Если ГраницыСтеки.ЛеваяГраница >= ГраницыСтеки.ПраваяГраница Тогда
        Прервать;
      КонецЕсли;
    КонецЦикла;
    Если СтекиПусты(Стеки) Тогда
      Прервать;
    КонецЕсли;
  КонецЦикла;
КонецПроцедуры
monk ★★★★★
()
Ответ на: комментарий от anonymous

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

Знать должны. Не должны ради этого усложнять свою работу. Вот сейчас СВО идёт, как бы вы отнеслись к идее перевести тексты законов и ГосУслуги на украинский язык, чтобы всем пришлось его знать?

Возможно ли это без знания вражеской мовы? Как вы языка допрашивать собираетесь, вояки?

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

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

Тем не менее, без знания программирования и этот код - непонятная каша, что за Массив, какие еще Стеки, Цикл, Структура - кто все эти люди?

Вы в школе не учились? Базовые знания программирования преподают всем.

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

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

Не должны ради этого усложнять свою работу.

И чем же ты усложняешь свою работу?

Предлагаете всех граждан РФ заставить повседневные дела обсуждать на украинском

Ну это же не враги, так, заблудшие овцы Русского Мира, верно ведь?

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

на эту тему анекдот вспомнился

В 19-м веке студенты учили французский - наваляли Наполеону, дошли до Парижа… В 20-м учили немецкий - наваляли Гитлеру, дошли до Берлина… Сейчас все учат английский - зря американцы к нам лезут, ой зря…

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

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

Это дается тебе с таким трудом, что, правда?! Но ведь сам же признал нужность английского, так лишняя тренировка не повредит.

Базовые знания программирования преподают всем.

Там и базовый английский преподают, но это ведь не аргумент?

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

Код должен быть readable.
Приведенный код плохо читаемый:

  • нет пустых строк, разделяющих инициализацию, цуиклы, … - каша малаша;

  • нет никакого пояснения о назначении кода и болоков кода;

Теперь немного об open source.
Зачастую он таков как приведенные выше примеры кода.
Если человек желает поделиться кодом с другими людьми, то код должен быть хорошо оформлен и документирован.
А приведенные выше примеры кодов это скорее неуважение к другим людям - «Нате жрите и меня благодарите».

«Слёзы капали»….

Скажу всем по секрету.
Код неплохо характеризует характер его писавшего …

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

Физические нагрузки тоже полезны, отменим на этой основе транспорт? Ведь лишняя тренировка не повредит.

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

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

Вы тут теплые моря захватывать собрались, а там неровен час, солдаты НАТО, где мы столько надежных переводчиков возьмем? А вот программистов как грязи. Нет, узко вы мыслите, квасные патриоты, как мы вражеские ОСи взламывать будем? C помощью 1C?

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

Языки программирования являются подмножествами естественных языков

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

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

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

поинтересуйтесь, почему индийская судебная система до сих пор на английском

The constitution provides, and the Supreme Court of India has reiterated, that all proceedings in the Supreme Court and the High Courts shall be in English.
https://en.wikipedia.org/wiki/Languages_with_official_recognition_in_India#Judiciary

при этом

According to the 2011 Census, 129 million Indians (10.6%) spoke English. https://en.wikipedia.org/wiki/Indian_English

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

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

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

если принудительное внедрение мовы на большинство русских, то не проще ли отделиться, основав автономную республику?

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

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

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

Могу сейчас переписать этот же кусок на 1С и ты, не зная 1С, сразу поймёшь, что он делает (так как знаешь русский язык).

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

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

среди индусов нет патриотов?

там далеко не все индусы. а так да, среди индийцев патриотов мало, ты посмотри на их горы мусора, и сразу всё станет ясно.

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

Термины предметной области не будут переводиться или однозначно переводятся.

Повторю ранее приведенную шутку.

Если хотите написать трилогию «Война и мир», то переведите последовательно «Евгений Онегин» через дюжину языков/

Кстати здесь интересный вопрос.

Программы виноваты или просто невозможно создать алгоритмы, которые могли бы качетвенно сделать такой перевод,

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

Скорее всего это не решаемая задача ни алгоритмами, ни человеком.

anonymous
()

Поскольку работа над закрытыми форками A2 продолжается и люди работают над этим за зарплату, отставание ЯОС от закрытой версии только увеличивается.

Декомпиляции форки подлежат?
Если не ошибаюсь, то код в Оберон находися в псевдокоде?

Ностальжи

Понадобились мне исходники процедур большого проекта на Firebird.
Разработал декомпилятор.
Да он и не особо сложен.

А ребята на Firebird и по сей день щёки надувают, что у низ есть возможность скрыть исходные коды процедур.

Нет такой возможности!

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

А ребята на Firebird и по сей день щёки надувают, что у низ есть возможность скрыть исходные коды процедур. Нет такой возможности!

Обязательно разработаю возможность конветации процедур и данных для популярных СУБД, да и конфигураций 1С в «Хранилище рессурсов».

Надоже как-то заинтересовать других разработчиков в том, что проект весьма интересный …

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

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

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

Иногда приходится переводить с уточнением. Например, «ряд» и «бегунок» переводить в каких-то случаях как «vector» и «iterator», а в каких-то как «row» и «runner». И, наоборот, переводить «die» где-то как «умереть», а где-то как «завершить работу».

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

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

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

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

Тем и интересна объектная система ЯП.
В мире «ни как», а в ЯП этот вопрос решаем.

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

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

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

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

Да и других подобных примеров весьма много.

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

В мире «ни как», а в ЯП этот вопрос решаем.

Просто вводится термин. «Оборотно-сальдовую ведомость по счёту будем называть osv_s». Но англоязычный читатель не соотнесёт с этим osv_s никакой образ (кроме «какой-то отчёт, нужный русским»). Это не решаем.

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

Вот, правильный пример. Только вывод неверный, ты заявил что тут какая-то нерешённая проблема. А проблемы то и нет. Называй хоть osv_s, хоть qxt_z, хоть ргя_й, это всё равно останется «какой-то отчёт», и это одинаково понятно вне зависимости от привязок к разговорным языкам. Всякие бухгалтерские понятия оставь бухгалтерам, но код они не пишут и названия переменных им не интересны.

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

Только вывод неверный, ты заявил что тут какая-то нерешённая проблема. А проблемы то и нет. Называй хоть osv_s, хоть qxt_z, хоть ргя_й, это всё равно останется «какой-то отчёт»

Нет. Это как раз исключение из правила. Также, как любое другое слово, которое заимствуется в язык для обозначения понятия чужого народа. Также, как слово «алгыс»: для русского человека это какой-то ритуал у якутов, у якута же с этим словом вполне конкретные ассоциации.

это всё равно останется «какой-то отчёт»

Если «какой-то отчёт» называется Balance sheet или All Assets, Liabilities and Equity, то это для англоязычного уже вполне конкретный отчёт, от которого он знает, что ожидать. А если он называется случайным набором букв, то пока не прочитаешь про него документацию, чего ожидать не узнаешь.

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

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

Если «какой-то отчёт» называется Balance sheet или All Assets, Liabilities and Equity, то это для англоязычного уже вполне конкретный отчёт, от которого он знает, что ожидать.

Для бухгалтера - да. Для программиста - это всё так же «какой-то отчёт». Вот твоя «оборотно-сальдовая ведомость по счёту», хоть и по-русски, а для меня «какой-то отчёт» и не более того - ведь я не бухгалтер. А бухгалтер, повторю, в код смотреть не будет и как там что называется ему плевать. Главное чтобы юзерский интерфейс был правильно локализован.

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

Для программиста - это всё так же «какой-то отчёт».

Любой программист знает предметную область, которую он программирует.

Если тебе дать задание «сделать передачу списка по протоколу TCP», то уже из формулировки ты примерно знаешь, что делать. А если «сделать передачу дерева вЭБ по протоколу хпрозе», то будешь разбираться значительно дольше, так как и структура данных и протокол неизвестны.

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

monk ★★★★★
()