LINUX.ORG.RU

Не осиливаю сокеты Беркли

 , ,


0

3

Hello ЛОР, полгода учу плюсы и технологии к нему, знаю qt, stl, sql, асинхронность, многопоточность. Во многих вакансиях указывают tcp, udp и тд, пытаюсь их учить, но получается очень плохо, вроде теорию знаю, но на практике я лох. Что посоветуете делать? бросать учить сокеты и сосредоточится на чем то другом? Заранее спасибо за внимание.

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

DevOps отвечает на вопрос «как мы работаем вместе» подменяя собой полностью автоматизированную CI/CD. Такая себе лоскутная автоматизация.

SRE создавая автоматизированные системы отвечает на вопрос «какой уровень надежности нам нужен и сколько он стоит», в том числе и CI/CD.

Девопсы не определяют критерии надёжности и не оценивают их. Они просто выкатывают как-нибудь результат работы программистов и надеяться что система не упадёт. DevOps не является инженерной ролью как SRE или System Admibustrator. Девопс это морская свинка - ни к морю ни к свинья.

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

Ну, засунуть докер в кубер и обмазаться графаной много ума не надо. Или сразу херануть терраформ обчитавшись статей на хабре если вона би дофига программист.

Посчитать же реальную необходимость и надёжность этого всего могут не только лишь все.

Есть такая оценка сложности алгоритмов, большая О. В инфре давно пора вводить свою. Сунул докер получил О(N^2), сунул кубер получил эн куб. Обмазал терраформом получил факториальную сложность и тд.

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

Ну, засунуть докер в кубер и обмазаться графаной много ума не надо

К сожалению, потом это хозяйства нужно развивать и поддерживать …

Сунул докер получил О(N^2), сунул кубер получил эн куб. Обмазал терраформом получил факториальную сложность и тд.

Зависит от масштаба. Если вы можете не пользоваться кубернетесом — не пользуйтесь. Главное, уметь заметить когда ты начинаешь писать свой собственный кубер из говна и паппета и остановиться.

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

Вы опять в рассуждениях ушли не туда. Кубер может любая обезъяна настроить и пользоваться, проблема в том что в большинстве случаев он не нужен, а его суют.

Как эникеи являются личинками сисадмина (если повезет) так и девопсы являются личинками SRE. Когда считают что между девопсами и SRE нет разницы это каргокульт.

Можно принимать эту реальность и эволюционировать, можно обижаться на нее и не принимать - дело ваше. У меня в принципе нет никакого желания доказывать очевидные вещи.

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

в большинстве случаев он не нужен

IT так работает. Ругаться же на человеческую натуру — последнее дело.

Как эникеи являются личинками сисадмина (если повезет) так и девопсы являются личинками SRE.

The DevOps Handbook говорит иное, впрочем не смею мешать вам настаивать на истинности вашего толкования.

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

Ругаться же на человеческую натуру — последнее дело.

Не понял где ругань и причем здесь человеческая натура. Много где нужны девопсы, из-за того что много где системы построены коряво. Это - данность, а не страж, защищающий Ops от Dev, потому что в нормально построенной системе не нужно никого ни от кого защищать.

The DevOps Handbook говорит иное, впрочем не смею мешать вам настаивать на истинности вашего толкования.

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

Ваши утверждения про DevOps и SRE это буквально «между эникеями и сисадминами нет разницы», задумайтесь над этим.

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

в нормально построенной системе не нужно никого ни от кого защищать.

Соглашусь, но с тех пор как одна подлая змеюка подбила одну глупую бабу съесть одно дурацкое яблоко мы живём в ненормальном мире, где наша природа искажена, люди несовершенны, существуют конфликты интересов и т.п.

Ваши утверждения про DevOps и SRE это буквально «между эникеями и сисадминами нет разницы»,

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

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

Привет, забей. Какашки в кармашки пусть дальше пихают себе и заказчику, пока обратно не полезет и из ушей заказчика.

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

Касаемо докера и еже с ним, что если не со знаком равно к DevOps пишут: IntelFX пишет, что докер это не деплой, а инструмент доставки. После изучения ответов mky, смотрю на doker как оркестратор namespaces/unshare.

В одном из подкастов: «разработчики docker смогли получить одноврменый запуск 30000 нод!», вопрос: «А зачем?», третий: «Потому что могут». В противовес, посмотрите историю появления SQLAlchemy ORM.

anonymous
()

Что посоветуете делать?

Написать простейшие echo сервер/клиент для начала. Сервер принимает соединение, всё что прочитал отправляет обратно. Клиент отправил некоторое сообщение, дождался ответа, вывел на экран, завершился. Потом повторить на UDP.

Сокеты конечно непростые, сеть сама по себе непростая, но постепенно станет понятно. Можешь ещё Таненбаума «Компьютерные сети» навернуть параллельно.

асинхронность, многопоточность

Вот это лучше на потом оставить. Хотя многопоточный TCP сервер с одним потоком на одно соединение сделать неплохо. Для асинхронности лучше взять что-то готовое, потому что там почти ничего нет от сокетов беркли, у каждой ОС своё апи.

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

что в нормально построенной системе…

В этом то и суть. А ещё лучше «в идеальной системе…»

А на практике получаем необходимость поддержки сборки например под 5 ос, подписи (на каждой ос своя), проверки на вирусы, заливки на cdn, обновления, авто тесты и т.п.

Конечно можно и тут сказать: ну вот, если бы у вас нормально настроено было… Хм, мне сомнительно. А, когда обновление ос или новая версия либ что-то ломает, то тоже фигово было настроено?

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

начни тады с какого учебника для связистов

али норм универский учебник по информатики где начинают с теоремы Шеннона о мере неопределённости как определении что уменьшает информация

а так да сокеты отличаются от языков(библиотек) тем что в отличии от последних это среда коммуникации а не средство коммуникации

а по топик-старту - просто практикуй код использующий сокеты (что выводит на распределённое программирование) ибо основные затруднения не в принципе а в «гонках» и прочих расхинхронах

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

на полном серьёзе

какие ресурсы нужны для онлайн индексации 10тб эластиком

в основном там pdf и прочие ворды - т.е текстовые индексы будут заведомо меньше исходных доков

?

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

подразумевается отличия в квалификации

псина это пту - т.е чётко следуй тб и тз и нормам работы у станка и будет премия

sre в идеале это чел который и чертёж выкатит и сможет убедит(обоснованием ) постановщика что решение unsound

т.е обычная разница между ремесленником(хорошим) и инженером(хорошим)

в реальности они идентичны(как поколения лептонов ) только масса(ака з\п) разные :)

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

т.е обычное отличие в уровне прошаренности в одной области - обеспечение инфраструктуры для разрабов

qulinxao3 ★☆
()
Последнее исправление: qulinxao3 (всего исправлений: 4)
Ответ на: комментарий от rumgot

А ещё лучше «в идеальной системе…»

Идеальных систем не существует. Но можно сделать нормально, когда девопсы не нужны.

необходимость поддержки сборки например под 5 ос, подписи (на каждой ос своя), проверки на вирусы, заливки на cdn, обновления, авто тесты и т.п.

А девопс как Сизиф вручную камень толкает в гору? Или софт выкатывает через написание скриптов и конфигов автоматизации?

Конечно можно и тут сказать: ну вот, если бы у вас нормально настроено было… Хм, мне сомнительно.

Ну вот потому вы и не SRE.

А, когда обновление ос или новая версия либ что-то ломает, то тоже фигово было настроено?

Это уже вотэбаутизм пошел при отсутствии аргументов. Вы сейчас ошибками допущенными при разработке/тестировании пытаетесь прикрыть несовершенство системы доставки софта.

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

какие ресурсы нужны для онлайн индексации 10тб эластиком

Ни докер ни кубер там не нужны.

Если серьезно, то слишком мало вводных данных. Из того что вы написали сходу вырисовывается пяток дата нод, каждая с 12-16vCPU, 64ГБ RAM, 4-5 ТБ шустрые диски (такой объем чтобы реплику впихнуть). Для парсинга доков придется подумать над Inцgest-ом. Но это все писями по воде.

Если получите 100 ГБ/ч обработки таких данных будет неплохо.

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

Вы описываете не разные профессии, а разные уровни в рамках одной. Т.е. жаргон на то и жаргон, чтобы каждый лепил что вздумывается, не сверяясь с главным институтом сленга и жаргона, но выглядит максимально странно для меня. Чем обычная схема junior/middle/senior + proffessionName не угодила?

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

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

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

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

Ну вот потому вы и не SRE

Переход н личности, пффффф, особенно это забавно при условии наличия следующего коммента:

Это уже вотэбаутизм пошел при отсутствии аргументов

вотэбаутизм

Эта мантра обычно используется в политике такими профанами и посмешищами как Максим Кац в попытках опорочить апеллирование оппонента окружающему контексту или к действиям противоположной стороны. «Это вотэбаутизм жа!!!!! Игнорим-игнорим-игнорим» Не стоит это использовать как самостоятельный аргумент. Тем более в технических обсуждениях.

Короче, выражаясь за тебя кратко: «у вас все херово настроено». Понял, спасибо 😊😊😊

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

Делали мы как-то инсталлятор OpenStack’а на puppet’е. Так вот, тем, кто считают докер с кубернетесом сложными, имею сказать следующее: „Ничего-то вы, сынки, в жизни не видели“.

Причём, кубер и паппет основаны на одной идее «описываешь желаемое состояние и система автоматически подстраивается под твою декларацию». Но в k8s она работает, а в паппете — нет.

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

«у вас все херово настроено»

Да не обязательно. IaaS/k8s/CICD и пр. практики имеют смысл, когда есть куча однотипных окружений. А если у тебя два окружение: одно рабочее и одно для тестирования, и оба жужжат себе на стоечке в серверной, то можно и по-старинке.

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

Переход н личности, пффффф,

Ни в коем случае. Это просто констатация факта, не хотел вас обидеть. Это как если бы джун обиделся на то что ему сказали что он не синьор.

как Максим Кац

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

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

Это уж позвольте мне решать. Если я вижу попытку демагогии я ее пресекаю. С вашей стороны пока что был только вотэбаутизм и навешивание ярлыков.

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

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

Всегда следовало рассуждение, начинающееся со слов «это зависит».

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

Это кстати хороший пример задачи которая на грани или выше компетенции DevOps.

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

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

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

DevOps не занимается эластиком. DevOps занимается системой развёртвывания (чего угодно, включая эластик). Т.е. нужно сделать штуку, которая конвертирует yaml в счета от AWS в готовый к работе кластер. А уж что с этим кластером делать — задача для специально обученных людей.

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

Это просто констатация факта

Аааааа. Я то думаю, что какая-то тень за спиной мелькнула.

Это термин из демагогии

Если я вижу попытку демагогии я ее пресекаю

Ты не понял вопроса. При этом героически вынес вердикт и объявил себе пресекателем.

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

Ты не понял вопроса.

Вы написали вопрос:

Конечно можно и тут сказать: ну вот, если бы у вас нормально настроено было… Хм, мне сомнительно. А, когда обновление ос или новая версия либ что-то ломает, то тоже фигово было настроено?

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

При этом героически вынес вердикт и объявил себе пресекателем.

Да разве это вердикт? Прищурился, увидел 5 звезд. Это - диагноз!

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

Ты игнорируешь аргументы.

Я не увидел аргументов. В вопросе:

А, когда обновление ос или новая версия либ что-то ломает, то тоже фигово было настроено?

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

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

aprentice и прочих слов в языках что в английском что в центровых-европейских для этих целей за цивилизации существования полно

конкретно ждун-в_обе_стороны-томат это буквально дедовщина коледжей новой анлии

семафор- и прочая

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

А разница? Слов-то можно много придумывать, но схема роста мастерства: ученик не знает правила, подмастерье знает правила, мастер устанавливает правила, — останется с нами. Потому как вот мастерство и растёт у людей.

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

одна из первых ссыль:

https://workplace.stackexchange.com/questions/10978/what-is-the-origin-of-jun...

как пример что вот эта вот юн-середён-уважаемый это буквально градации нубов

для реальных инженегров и прочих спецов свои плашки как и для всях других проф-областей

ваще вот эти вот юн-среден-гранд это буквально следствии ювинилизации пехоты на галерах

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

Человек явно пошел не с той стороны, он заходит со сверх сложного GUI, когда Сокеты являются продолжением CLI интерфейса и концепции UNIX процесса с 3-мя текстовыми потоками. Говоря по простому, пользователь поставил процесс обучения «с ног на голову».

вы таки будете смеяться, но возможно и так тоже можно. вот только осилить и понять изложение (а также грамотно среду его запускалки задеплоить) смогут «не только лишь все».

например: начинаем обучение с классического алгол-68 (благо в Debian SID есть gcc-snapshot со всеми этими gdc/gccrs/gm2/gnat/ga68/… ) и книжек Д. Кнута про «искусство программирования» и «TeX: The program and the book» and tangle.web/weave.web/tex.web и tex-fpc форка (на паскаль, а надо бы на алгол, модулу или там аду).

почитывая (и прорешивая! это важно!) классические TAOCP: «Art of the computer programming» The-Art-of-Computer-Programming-Books

– параллельно осваиваем алгол-68 (там кажется в TAOCP примеры именно на алголе были или уже чем-то другом?)

и читаем какую-то книжку по алголу: PAME.pdf «Programming Algol-68 made easy» с примерами на Algol-68C (который работает транспиляцией в сишечку, со всеми ее батарейками + libcurl) или книжку по Algol68-G (Genie, который интерпретатор/компилятор и где тоже есть libcurl «из коробки»).

читаем в алголе-68 про ввод-вывод в виде transput и например про форматированный ввод вывод readf/printf и про каналы (через которые сделаны интерфейсы к libcurl и сокетам и т.п.).

и берем какую-то практическую задачу, вот например из algol-68 ga68 который в gcc-15+ «алгол-68 с модулями» Algol68FrontEnd:

например: вот этот проект godcc по ссылкам из Algol-68 language tools => "Compiler Explorer

вот ссылка на репозиторий: git.sr.ht/~jemarch/godcc

здесь, если начать изучение по ссылкам: идёт JSON запрос к HTTP серверу, через сокеты (а не libcurl и каналы) на «модульном алгол-68» (который ga68 в gcc-15+).

например: начинаем читать с src/godcc.a68, затем идём смотреть в src/http.a68 разбор протокола HTTP, и в src/json.a68 разбор JSON. а основное что делает – в src/format.a68

=>

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

вообще, ga68 в этом смысле прямо таки напоминает какой-то модульный паскаль или типа модулы или ады (объектов там в языке еще нет, конечно же).

с компилируемыми модулями, как в аде и модуле (а не как в С++20 каком-нибудь).

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

вообще, наверное можно в подобном духе и «литературно-грамотную методичку» написать – по образу литературно-грамотных {tangle,weave,tex}.web программ.

например:

  1. долго и нудно tangle Literate DevOps с установкой этого самого gcc-snapshot с ga68/gm/gnat/g++/gobjc++/gdc/gccgo/gdc

и деплоим этот ga68 из мега-deb одной командой.

  1. берем псевдокод на алголе про сокеты, написанный под algol68C или Algol68-G Genine c libcurl, и переписываем его на более низкоуровневую реализацию

  2. на ga68 где парсим и сокеты и протокол «руками», но все еще на «высокоуровневом алголе», с transput/channel, многозадачными мутексами PAR/SEQ и прочими плюшками

  3. переписываем на ещё более низкоуровневую реализацию, практически идентичную сишечной

  4. в случае algol68C – вплоть до транспилированных исходников на самой сишке, скодогенерированной из алгола.

то есть: все эти низкоуровневости можно вводить постепенно и поэтапно, «методом последовательного уточнения» aka stepwise refinement – в духе литературно-грамотного изложения аналогичного самим {tangle,weave,tex}.web

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

например: переписывая его на самые разные языки, демонстрируя примеры и идиомы каждого очередного конкретного языка (например: модули, структурное программирование, объекты и классы в objc++, горутины в gccgo, string template mixin в gdc, асинхронности в русте и т.п. низкоуровневый пердолинг с raw-сокетами в няшной сишечке)

в низкоуровневой сишечке всего этого нет, разумеется – поэтому там надо начинать сразу с пердолинга :)))

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

а вообще чтобы понять «как сделаны сокеты» можно изучить (и/или, поковырять, что-нибудь добавив от себя) примеры исходников : MUD, Moo, LambdaMOO – например. в качестве сервера, и какой-то мудклиент (например:, tinyfugue/tintin++ на C/mudlet на Lua/pueblo на Lua/ …. gypsum на pike+gtk, а не С/ещё что-то там, AXMUD кажется на Perl+GTK3)

там как раз самые незамутнённые BSD сокеты, как они есть. и например, таймер через сигналы и SIGALARM и т.п.

смысл в том, чтобы не мешать в одну корзину, GUI, Qt, C++, его QtTcp*, события, асинхронности, STL и т.п. – а мухи сокеты отдельно, GUI и С++ – отдельно.

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

Compiler Explorer

например, там сразу грузиццо пример с хелловордом:

begin puts ("Hello world!'n") end

и то, как эта ботва на ассемблер транслируется, с рантаймом: call _libga68_posixputs , call _libga68_malloc, call __ga68_puts3914

то есть: тут можно сразу демонстрировать что такое рантайм и стандартная библиотека.

malloc и ручной пердолинг или сборщик мусора, модули или их отсутствие, рантайм языка в виде libc/libstdc++/libga68, статическую или динамическую линковку, состав этого рантайма (например, transput или форматированный readf/printf) и реализацию многозадачности (семафоры и мутексы в параллельном алголе или их отсутствие или позикс треды или ….) и т.п.

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

и перед его мифическим «фичастым рантаймом с батарейками из коробки» – и его мифической сложности.

рантайм любого ЯП – на самом деле, очень простая штука. и его функции вот такие: ….

рантаймов может быть два: например, алгол и сишка, или ада и сишка, модула и сишка, д и сишка, ++ и сишка (сишка и плюсишка).

а в это время, с моделью памяти абстрактного исполнителя – в рантайме происходит вот такое: …..

и вот такие .... фичи языка «высокоуровнего ЯП» для поддержки этой модели памяти этого абстрактного исполнителя – реализуются вот таким ..... кодом вот таким .... способом.

отсюда вытекают вот такие ... минимальные/средние/максимальные «накладные расходы» на эти «фичи высокоуровенего мегаязыка ЯП» и через статическую/динамическую линковку и оптимизацию/помодульную/межмодульную её/или их отсутствие происходит вот такая …. амортизация этих накладных расходов на высокоуровневые фичи мегаязыка, доступные сразу «из коробки»

anonymous
()
Ответ на: комментарий от anonymous
  • github.com/aap/metaII : META II компилятор компиляторов классический, с реализацией на С.

с примерами алгол(-60?) на нём самом: valgol2.m2

– внушаить!

ещё asm2c.awk. и транспиляция в скодогенерированную сишную лапшу метакода meta2.code из METAII-кода meta2.m2

в общем, такой простой и позорный транспилятор (не дотягивающий до того же Algol68-C, хотя бы) – пишется не так уж и сложно.

далее паскаль это упрощенный алгол-58/60. симула-67 это объектно ориентированный алгол-60. модула это усложнённый упрощенный алгол, а ада это усложнённый усложнённый алгол. модула-3 и оберон-2 это объектно-ориентированная модула двумя разными способами. проект оберон это однозадачный досоподобный, вместо проекта лилит на модуле – блекбокс компонент паскаль это виндоподобный документоориентированный компонентный модульный фреймворк, синхронный. а обероны активные в а2 и синей бутылке – это акторный асинхронный фреймворк с мутексами и семафорами на уровне каждого объекта актора.

которые и реализует их рантайм.

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

сишка это тоже не особая магия. а просто интерпретируемый B aap/b из BCPL который в новой упаковке стал конпелируемым: http://squoze.net/B/compiler/README

и исходники из UNIX V4 UNIX/v4: http://squoze.net/UNIX/restored/ где зело простая сишка (а часть осталась старая на B, а старая на асме еще: например, as, ld, cat,kill и т.п.) – тоже не сильно сложная.

это если например, as/ld/binutils писать сначала на B, а потом переписывать на С.

anonymous
()
Ответ на: комментарий от anonymous
github.com/aap/metaII : META II компилятор компиляторов классический, с реализацией на С.
с примерами алгол(-60?) на нём самом: valgol2.m2

– внушаить!

ещё asm2c.awk. и транспиляция в скодогенерированную сишную лапшу метакода meta2.code из METAII-кода meta2.m2

в общем, такой простой и позорный транспилятор (не дотягивающий до того же Algol68-C, хотя бы) – пишется не так уж и сложно

то есть, что тут происходит, раскрывает Makefile:

программа на алголе-60 prog.v2 транспилируется в valgol2.inc рантайм интерпретатора алгола (или metaII?) – v2.c, специализированный грамматикой алгола на мете: valgol2.m2

то есть, этот метаинтерпретатор реализован как конечный автомат, который затем из интерпретатора метаязыка metaII раскручивает реализацию интерпретатора объектного языка алгол-58/60 и программы на нём prog.v2 (и их рантаймов).

если пофантазировать: то для алгола-68 должен быть не metaII и грамматика на его метасинтаксисе, а что-то с WG-грамматиками ван Вейнгаардена многоэтажными, с понятиями/метапонятиями/метаправилами/гиперправилами – раскрывая его (мета)синтаксис.

АЛГол = АЛГоритмических алгебраических выражений объектный (мета)язык.

ЛИСП 1.5 aap/l15 – где грамматика M-выражений поверх S-выражений = алгоритмических M-выражений алгебраических S-выражений моноида «кододанных» объектный (мета)язык.

который метациклически интерпретирует сам себя, то есть, забутстраплен из взаимно рекурсивной реализации eval/apply/evlis (или с SUBR и FEXPR как в примере с 1.5).

то есть, если пофантазировать: ортогональный синтаксис метапонятий алголовыражений должен далее лисп-подобными макрами раскрываться на языке описания грамматик как metaII-грамматики (только WG-грамматики) – в объектно-ориентированное надмножество типа симулы-67 с объектной моделью С++ — либо в CLOS-надмножество.

и/или, специализироваться и уточняться в какое-то упрощенное «высокоуровневого ассемблера типа Euler или HLA» подмножество.

получится примерно Dylan с функциональными объектами и макрами D-exprs транспиляцией через сишку, только алгол.

и без сишки. и плюсишки.

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

если пофантазировать: то для алгола-68 должен быть не metaII и грамматика на его метасинтаксисе, а что-то с WG-грамматиками ван Вейнгаардена многоэтажными, с понятиями/метапонятиями/метаправилами/гиперправилами – раскрывая его (мета)синтаксис.

допустим, вместо интерпретатора языка алгол-60 (или метаинтерпретатора metaII) в виде v2.c >>= valgol2.m2 => valgol2.inc :

  • в похожем виде, из WG-грамматики алгол-68 на metaII генерится метаII-код для парсера алгол-68

  • реализован tangle.web для транспиляции в сорцы ( из metaII-грамматики WEB метаязыка) со всеми сорцами и рантаймами и литературно-грамотным структурным кодом

  • реализоан weave.web для транспиляции в доку.tex >>= дока.{pdf,html,rtf,odt,ps,md,asciidoc} со всеми индексами и литературно-грамотным структурным документированием.

через какой-то метациклический метаинтерпретатор мифического метапрога "на самом себе"

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

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

сам литературно-грамотный деплоинг тут будет делаться через tangle LitDevOps.web > Makefile.in.

скажите, а зачем тут нужен живой человек-девопсер?

что он будет делать такого уникального, чего невозможно сделать скриптом или C-c C-c LitDevOps.org в Emacs или запускалкою юпитерноутбуковой?

anonymous
()