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
()