LINUX.ORG.RU
ФорумTalks

Plan 9

 ,


1

6

Продолжаем:

Операционная система Plan9 опередила свое время на 20 лет. Задачи для решения которых она была проектрована еще не стояли перед коммерчским миром IT, во всю испольовался однозадачный DOS, и UNIX более чем хватало для решения проблем.

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

До появления ChatGPT казалось, что это отставание вечно, и Plan9 уже не возможно вернуть, так как под UNIX написанны «терра-тонны» кода, и как их портировать. Но LLM дает второй шанс. Так как на LLM можно сложить перевод драйверов и перевод системных библиотек для реализации новых сетевых протоколов таких как QUIС и HTTP/3. Приложения уже напишут разработчики на Go (который поддерживается в Plan9 нативно, команда Роба Пайка не забывает Plan9).

Plan9 действительно отличается от UNIX, так же как UNIX отличается от Windows. Потому, что предоставляет универсальный интерфейс для любых объектов системы. Программисту достаточно понять одну концепцию и он избавляется от необходимости постоянного изучения новых интерфейсов. Это как STDIN/STDOUT распределенные далеко за предлы CLI.

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

Plan9 is not a product

From: s...@ulysses.homer.nj.att.com (Steven Bellovin)
Newsgroups: comp.unix.wizards
Subject: Re: Plan 9? (+ others)
Date: 23 Aug 88 16:19:40 GMT

«Plan 9» — это не продукт и не задумывался как таковой. Это исследование — экспериментальное изучение иного подхода к вычислениям. Разработчики исходили из нескольких базовых предположений: что процессоры стали очень дешёвыми, но мы не умеем эффективно их объединять; что хорошие сетевые технологии крайне важны; что интеллектуальный пользовательский интерфейс (включая растровый дисплей и мышь) — это верное решение; что существующие системы с сетями, мышью и т.д. не являются правильным путём, и в частности, что современные рабочие станции — не тот ориентир, к которому стоит стремиться. (Нет, я не буду утруждать себя объяснением всех их доводов — это материал для отдельной длинной статьи.) В конечном счёте, система UNIX как таковая мертва в качестве инструмента для серьёзных исследований в области структуры операционных систем — она стала слишком громоздкой и слишком ограничена более чем 15-летней историей.


Подробнее:



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

В идиомах надо сидеть и разбираться

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

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

гошники изобрели паттерны проектирования из жабы.

Вы опять вырываете из контекста, редуцируя три страницы текста в 6 слов. Какой у вас узнаваемый патерн оспаривания.

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

Jon Bodner «Learning Go»:

Go Isn’t Particularly Object-Oriented (and That’s Great)

Если пытаться втиснуть Go в одну из этих категорий, результатом будет неидиоматичный код. Если бы пришлось определить стиль Go одним словом, лучше всего подходит слово «практичный». Он заимствует идеи из многих источников с главной целью создать язык, который будет простым, читаемым и поддерживаемым большими командами на протяжении многих лет.

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

Вы опять вырываете из контекста, редуцируя три страницы текста в 6 слов. Какой у вас узнаваемый патерн оспаривания.

Этот контекст существует только в твоей голове, чувак. Примерно как «светлая комната Plan9» из другого треда.

В Golang мире не принято декларировать о изобретении чего-то

Я нигде не писал, что кто-то где-то о чём-то декларировал. Я написал, что гошники переизобретают уже существовавшие до них практики.

на оборот

На деепричастный оборот, надеюсь?

Go Isn’t Particularly Object-Oriented (and That’s Great)

Ты опять с голосами в своей голове переписываешься и проецируешь их тезисы на мою персону. Про ООП я ни разу нигде не писал.

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

Особенно идею if err != nil { return nil, err }. Copypaste-driven development, lol no generics.

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

То была цитата с указанием автора, названия книги, и параграфа. Про эклектичность языка. Вот я ее и перевел:

Go Isn’t Particularly Object-Oriented (and That’s Great)

Now that we’ve taken a look at the idiomatic use of types in Go, you can see that it’s hard to categorize Go as a particular style of language. It clearly isn’t a strictly proce‐ dural language. At the same time, Go’s lack of method overriding, inheritance, or, well, objects means that it is not a particularly object-oriented language, either. Go has function types and closures, but it isn’t a functional language, either. If you attempt to shoehorn Go into one of these categories, the result is nonidiomatic code.If you had to label Go’s style, the best word to use is practical. It borrows concepts from many places with the overriding goal of creating a language that is simple, read‐ able, and maintainable by large teams for many years.

Глава №7, страница 159. Learning Go (c) 2021 Jon Bodner

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

Этот контекст существует только в твоей голове, чувак. Примерно как «светлая комната Plan9» из другого треда.

Вы не понимаете метафор. Бывает. Бывайте.

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

Я за Го следил и писал (сейчас уже не особо) где-то с 2009 или 2010, когда error еще был в пакете os и сидели они на svn.
В основном посыле я с тобой согласен, для того, чтобы писать на Го как на Го нужно достаточно долго осваивать его идиомы. Сам язык простой максимально, но вот роль, которую там играют идиомы огромная. О чём ты и говоришь.
Но, по моему мнению, вся проблема и разногласия в этой теме обусловлены тем, что в индустрии мало кто действительно думает о таких вещах, люди просто пишут на Го как на C/Java/Python/etc. Это ещё из древних времен известно, что программист на Фортране может писать фортран-код даже используя Паскаль. И действительно, большинство промышленного кода, что я видел (правда, я не сильно много его видел по работе) выглядит как код на Жабе. Вот твои оппоненты и об этом и ведут речь: освоил синтаксис за выходные и пишешь как привык используя Го синтаксис. Основная масса индустрии так и работает.

Я когда-то хотел с унылой Жабы спрыгнуть на Го. Но именно унылое качество большинства проектов меня остановило — нет смысла менять шило на мыло. Может тебе повезло, и ты попадал/выбирал только нормальные компании и команды. И, как результат, ты немного идеализируешь положение вещей.

По Жабе есть тоже хорошая, культовая книга чисто с жаба-идиомами: Effective Java. Думаешь её читало хоть 3% разрабов на жабе? Разве что в Яндексе/Гугле.

И ещё. Вспомнил просто феерический случай, на эту тему. Один коллега (Жаба-погрмост) писал небольшую поделку на Питоне. Видимо, у него был настолько ООП головного мозга, что он не признавал len() и вместо него везде в коде использовал __len__().

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

Ну так и файлы широчайшее распространение имеют. Главное не натягивать на них всё.

А эндпойнты к тому же побогаче файлов будут.

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

Но, по моему мнению, вся проблема и разногласия в этой теме обусловлены тем, что в индустрии мало кто действительно думает о таких вещах, люди просто пишут на Го как на C/Java/Python/etc.

Да. Даже шире Go используется там где можно обойтись оптимизированным Python. Так как «стильно, модно, молодёжно».

Вот твои оппоненты и об этом и ведут речь: освоил синтаксис за выходные и пишешь как привык используя Го синтаксис. Основная масса индустрии так и работает.

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

Что-то я очень сильно сомневаюсь, что кто-то что-то на Go пишет. Скорее пересказывает где-то услышано. Как можно писать на Go без идиом если с первого шага втыкаешся в Context, Reader-Writer ну и далее по списку: Endconding/Decoding JSON, Benchmarking, net/http?

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

По Жабе есть тоже хорошая, культовая книга чисто с жаба-идиомами: Effective Java. Думаешь её читало хоть 3% разрабов на жабе? Разве что в Яндексе/Гугле.

Да, в курсе я. Это не «разрабы» это операторы баз данных, а их работа называется «plumbing». Разработчики есть, но чтоб попасть к ним в команду нужно нормально вваливать. За хорошую команду надо драться, в плане суровой подготовки.

По этому я и читал по ночам «Go in Action», «Idomaitc Go», «Go Network Programming». Чтоб общаться с инженерами-разработчиками, а не недоучками.

Тяжело.

Братан, дай я тебя обниму. Хоть нормальные пацаны на LOR есть. В общем, пойду я дальше рубиться.

ВСЕ БУДЕТ НОРМАЛЬНО. Обнял.

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

Уууууааа. Всем Киокушин! Осу!

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

Да. Даже шире Go используется там где можно обойтись оптимизированным Python. Так как «стильно, модно, молодёжно».

Где-то в районе 2013-2014 года у нас был такой ажиотаж с Го (почти как сейчас с ИИ ботами), что галеры просто набирали хоть вчерашних ПХПшников умеющих написать цикл на Го, чтобы козырять перед клиентами, мол какая у нас Го-экспертиза и вообще, мы с ним работаем уже 20 лет. :)

Что-то я очень сильно сомневаюсь, что кто-то что-то на Go пишет. Скорее пересказывает где-то услышано. Как можно писать на Go без идиом если с первого шага втыкаешся в Context, Reader-Writer ну и далее по списку: Endconding/Decoding JSON, Benchmarking, net/http?

Без обид, но мне кажется, ты в индустрии недавно и ещё многого не видел. Ну или, как я уже говорил, работал только с нормальными людьми. *Большинство* современных программистов не знают примерно нифига и умеют еще меньше. Онлайн доступ в Интернет (ака СтекОверфлоу) позволяет писать код при минимальной подготовке.
У нас на собеседовании половина не может с закрытыми глазами for написать. Отмазываются, что они просто привыкли к ИДЕ. Когда им даёшь ИДЕ то дальше for они, всё равно, зайти не могут.

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

REST-Api просто сводится к файловым операциям: открыть, записать, прочитать, удалить. Но даже если просто посчитать, то выходит:

HTTP: 9 методов, из которых популярны 4: GET, POST, PUT, DELETE.

PLAN9: 14 системных вызовов, относящихся к файлам.

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

14 системных вызовов

Если уж сравнивать с REST, то считать надо методы 9p. Ну, вероятно, популярные методы будут одни и те же.

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

Там не все plan9-syscalls релевантны обсуждаемой теме. Но, учитывая, что идея у 9p файлов и rest api endpoints одна и та же, то и вызовы будут примерно одни и те же. С поправкой на детали реализации, конечно.

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

Из бредогенератора:

Про Робa Пайка и Go. Тут будет максимально честно и без фанбойства.

Go — это:

  • не язык Bell Labs,
  • не язык Unix,
  • и точно не язык Plan 9 (хотя маркетинг любит обратное).

Go — это:

  • язык для Google scale operations,
  • для армии средних инженеров,
  • для «чтоб не думали слишком много».

Он анти-Plan-9 по духу:

  • упрощение вместо ортогональности,
  • запреты вместо выразительности,
  • «не думай» вместо «дай модель».

И да, внутри старой BL-культуры Go воспринимается как:

«Мы знали, как делать правильно — а он сделал удобно».

Не катастрофа. Но репутационный даунгрейд — абсолютно понятен.

При этом важно другое: Пайк не «предал», он сменил роль:

  • из исследователя моделей → в инженера массового производства.

Это не плохо. Просто это другая лига.

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

Главное не рассказывать никому кто спонсировал Bell Labs.

Походу они сами напугались получаемых результатов и решили быстренько прикрыть проект пока не поздно?

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

Ну да, она уже тогда тормозила из-за сетевой архитектуры.

Plan9 тормозил больше Кубера при прочих равных условиях (на таком же оборудовании)?

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

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

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

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

В Golang нет дубовости

Смотря что считать дубовостью и считать ли оную недостатком. Я считаю Golang дубовым в силу отсутствия гор сахара. И считаю такую дубовость преимуществом. Лаконичный инструмент для решения широкого круга задач.

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

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

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

Я написал, что гошники переизобретают уже существовавшие до них практики.

Идиомы и паттерны это совершенно разные вещи. Идиомы придумали задолго до Golang и до паттернов (я подразумеваю выделение их в отдельную сущность), но это не значит, что в Golang идиомы не важны. Они тут играют очень важную роль.

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

Видимо, у него был настолько ООП головного мозга, что он не признавал len() и вместо него везде в коде использовал len().

Экхм. Я бы попросил его хоть что-то по пайтону почитать на самом деле. Ну или хотя бы намекнул зачем нужны магические методы в пайтоне :)

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

Go используется там где можно обойтись оптимизированным Python

Обойтись можно, но противно. Не хочется после Golang ни Python, ни PHP.

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

Обойтись можно, но противно. Не хочется после Golang ни Python, ни PHP.

A Groovy или JRuby?

Project Loom - Virtual threading for the JVM

Project Loom, officially included as part of Java 21, allows us to use “virtual threads” to scale Ruby’s “fibers” to thousands of concurrent instances. We’re going to continue working with Loom engineers to improve performance of cross-fiber communication, optimize structured concurrency for asynchronous IO frameworks, and reduce memory requirements for small, short-lived fibers. After startup time, scalable fiber support has been one of the hardest challenges for JRuby. We finally have an excellent solution.
sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Microsoft портировали свою версию на i286

Wikipedia пишет, что 8086 и Z8001. Есть информация по числу проданных экземпляров по архитектурам?

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

Если у вас не требовали знания азов - то это только характеристика вашей конкретной команды.

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

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

Это ты @lbvf50txt объясняй, он сейчас расскажет про Великую Оптимизацию, которой гошники занимаются.

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

Wikipedia пишет, что 8086 и Z8001. Есть информация по числу проданных экземпляров по архитектурам?

По архитектурам нет. Но пишут, что к 1989 было продано 350 тысяч копий.

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

Этот контекст существует только в твоей голове, чувак. Примерно как «светлая комната Plan9» из другого треда.

Вы не понимаете метафор. Бывает. Бывайте.

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

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

Судя по Elastic Stack, микросервисы на Го невменяемо ресурсоёмкие.

Зависит от алгоритма, есть такой способ оценки роста потребления ресурсов программой как Big O notation. Понимание Big O notation отчаивается на Leetcode.

Если сервис писал «мастер-ломастер» без образования и с лютой ненавистью к академизму, то он вполне мог заложить квадратичную, кубическую, а то экспоненциальную зависимость. И даже не понять, что он натворил. Тут ни какой Golang и Си не помогут.

Вот по этой причине когда берут в Yandex/Ozon/Avito претендента тестируют по алгоритмам, да еще и задачу по ходу меняют - чтоб по памяти не отчитался, а именно объяснил решение. Но упоминание Leetcode на форумах подобных LOR вызывает дикие корчи и припадки ярости.

Сейчас набегут «сайтописцы» и будут доказывать, что они без алгоритмов уже 20 лет работают, и имеют уважние. И им алгоритмы не нужны.

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

к 1989 было продано 350 тысяч копий.

В 1985 Гейтс утвеждал, что скоро будет 400 000: https://en.wikipedia.org/wiki/Xenix#Transfer_of_ownership_to_SCO
Но в 1988 утверждали, что >250 000: https://en.wikipedia.org/wiki/Xenix#Replacement

Поди разбери, с какого потолка брали.

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

Вы меня так утомили своими попытками оспорить и унизить.

// Найти все article с классом msg
const articles = document.querySelectorAll('article.msg');

articles.forEach(article => {
  // Найти div.sign внутри статьи
  const sign = article.querySelector('div.sign');
  if (!sign) return;

  // Проверить наличие нужного пользователя
  const userLink = sign.querySelector('a[itemprop="creator"]');
  if (userLink && userLink.getAttribute('href') === '/people/hateyoufeel/profile') {
    // Заменить все <p> внутри статьи на bla-bla-bla-lba
    const paragraphs = article.querySelectorAll('p');
    paragraphs.forEach(p => {
      p.textContent = 'bla-bla-bla-lba';
    });
  }
});

Aж посвежело.

lbvf50txt
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)