После более года разработки опубликован выпуск сервера синхронизации точного времени NTPsec 1.2.4. Проект был создан как форк эталонной реализации протокола NTPv4 (NTP Classic 4.3.34), сфокусированный на переработке кодовой базы с целью повышения безопасности. Исходный код NTPsec распространяется под лицензиями BSD, MIT и NTP...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=63103
C - 71.6%, Python - 26.4%. Что может заставлять писать на питоне людей, умеющих писать на Си?
Ну не на расте же писать. А простой и понятный большинству язык программирования.
А это уже не тысяча глаз, а миллион глаз.
Лаконичный синтаксис. Хотя это спорно, у всех вкусы разные. Богатый выбор библиотек. В итоге скорость разработки существенно повышается. Особенно хорошо это работает для прототипирования, когда нужно быстро проверить идею, чтобы понять, рабочая она или нет. И затем уже усложнять, если да и если это нужно. Буквально 5 минут назад как раз была похожая дилемма. Написать на си или на питоне? Ну думаю, если я напишу на си, то оно будет работать раз в 10 быстрее. А нужна мне такая скорость в рамках задачи ценой нескольких часов переписывания модуля на си? Нет. Если только медальку на грудь повесить и гордиться ею. И так для большинства задач. А так бы с радостью побайто*бил :D
> для прототипирования, когда нужно быстроDNF - хороший пример того, как быстрое написание прототипа на питоне привязало продукт к питону больше чем на десятилетие. Одно дело - решить здесь и сейчас задачку, которая в будущем или совсем больше не понадобится, или будет востребована изредка. И совсем другое - софт, который будет использоваться широко и постоянно, такой как NTPsec.
Да, но это уже вопрос понимания отдельными разработчиками контекста. Вопрос того, насколько они могут и хотят смотреть далеко в будущее. Ты свой вопрос поставил в общей форме, я тебе в общей форме и отвечаю. А что там какой-то конкретный разработчик где-то что-то недодумал или забил на что-то болт, это уже не проблема питона как языка или экосистемы. С таким же успехом прототип мог бы быть написан на пхп, ноде или руби.
Ну, вот, вроде 5-ка уже на Си переписана? И в 41-й Федоре выкатили... Стало работать ощутимо быстрее? Нет, не почувствовал. Все равно там в ИО все упирается. Зато табличка перед подтверждением изменений стала трешовой... Читаемость в разы упала. И плагины не все перенесли из 4-ки. Нужного не оказалось. Лучше бы оно на Питоне оставалось.
подозреваю , что на питоне, где совместимость легко ломают в минорной версии, сопровождать стало весьма трудно
> В итоге скорость разработки существенно повышается.Всё верно, только один маленький нюанс, - питон это интерпритатор, со всеми его болезнями, - в ходе развития языка, вносятся обратно не совместимые изменения и привет програме написанной на чудо языке. Извращения с PyInstaller, Cpython, Nuitka, cx_Freeze, PyOxidizer... оставим в стороне, т.к. это классический воркэраунд
В итоге получается что сопровождение завязанно на женитьбу с тем языком и тогда либо мyдoxаться с uv, с админами на удаленных хостах и мучительно вспоминать на каждой сломанной програме - "а чиво енто мы там изобретали..."
Это аргумент. Хотя мне не удалось застать времена перехода со 2 на 3 версию, так что мне незнакома та боль, породившая столько холиваров в своё время. Но всё, что было после, обычно решалось косметическими правками. Порой только бывало, что нет какой-то библиотеки, которая была в прошлой версии. Или она тоже сломалась. Тогда можно было просто подождать, если не горит. Или отдельно скомпилить старую версию и залочить под неё код, если в нём нет желания разбираться. Но да, наверное если у вас серъёзный масштабный проект, для которого важна железобетонная надёжность, то тогда питон возможно не лучший вариант. Но идеальных языков не существует. Беря что-то в приоритет, зачастую в остальном приходится мириться с компромиссами.
Переход на 3 версию был ужасом ,летящим на крыльях ночи.
Какие-то скрипты для сборки и, видимо, кодогенерации (*.y файлики похожи на какие-то шаблоны).
Не угадали. Они перенесли кучку утилит под питон:ntpdig.py ntpkeygen.py ntploggps.py
ntplogtemp.py ntpmon.py ntpq.py
ntpsnmpd.py ntpsweep.py ntptrace.py
ntpviz.py ntpwait.py
Нежелание писать на Си, когда этого можно избежать?
Нафига для лёгкого ntp протокола, где скорость сишки вообще не нужна, тащить туда сишку? Чтобы что? А в питоне исключаются знаменитые эти ваши сишные хаки, вроде выхода за пределы, повтороное зануление, и т.д и т.п.?
Ну если ты админишь свой локалхост, то да, наверно тебе скорость не нужна.
А тебе скорость нужна? Чтобы что? Или ты считаешь, что разрабы ntpsec ещё не проводили сравнение язычков для своего проекта, и они выбрали питон от балды?
> выбрали питон от балдыЭто адекватный эпитет для контрибутора, который знает только один-единственный простой в изучении и лёгкий в написании ЯП.
>Это адекватный эпитет для контрибутора, который знает только один-единственный простой в изучении и лёгкий в написании ЯП.Верно! Только в сишке есть столько undefined behavior, сколько нет ни в одном другом язычке! Сишка - для илитариев!
> Верно! Только в сишке есть столько undefined behavior, сколько нет ни в
> одном другом язычке! Сишка - для илитариев!О, ещё один с УБ. Я уже одного такого тыкал носом в спеки Сишки, где английским по белому написано "вот так кодить не надо, если так кодить - возможно УБ".
И как, помогло?
Как видишь, это не лечится.
> Как видишь, это не лечится.Ну вот, видишь? Сам же все понимаешь - не приспособлен хрупкий человеческий рассудок к познанию Хтонических Таинств Древних, эти ИСТИНЫ слишком тяжелы для нас...
Какие истины ?
Тебе говорят - "вот грабли, наступать на них не безопасно".
Если твой рассудок не приспособлен к пониманию такого предупреждения, желаю тебе залезть на столб с табличкой "Не влезай, убьёт".
> Какие истины ?
> Тебе говорят - "вот грабли, наступать на них не безопасно".
> Если твой рассудок не приспособлен к пониманию такого предупреждения, желаю тебе залезть
> на столб с табличкой "Не влезай, убьёт".Тайные! Древние! Ты туда нэ ходы - ты сюда ходы! Ой, нэт - сюда тоже нэ нада - и туда нэт, но только по вторникам - и вот так примерно всё-и-всегда. Главное - не политурить!
> Нафига для лёгкого ntp протокола, где скорость сишки вообще не нужна, тащить туда сишку? Чтобы что?Чтобы "Отлито из бетона для плотин ГЭС в 15мм стальную легированную арматуру, за одну заливку. Гарантия - 800 лет."(С)
Софт же на пистоне работает до очередного его обновления...Ну как то так!(С) :)
это круто, но как гарантия в 800 лет соотносится с сишкой? там гарантия до первого кривого парса массиваесли уж говорить про железобетонность, то это разве что на какой-нибудь Аде писать под военные стандарты, но тогда на этот бедный NTP-сервер человеколет 100 уйдет
>там гарантия до первого кривого парса массиваПришедшего из вне ты хотел сказать?
Ну это как раз типичная проблема питой скриптов, кстати. Иронично
>где скорость вообще не нужна.NTP сервер. На него вполне могут стучаться 300 млн клиентов.
Ну, вообще-т "третьего дня" был прецедент, когда из-за неправильной настройки "Алисы" специалистами тындекса чудо-женщина умудрилась завалить практически 100% NTP-серверов в домене ru...
У людей, не знающих ни питона, ни Си, есть впечатление, что Си - это какой-то очень филигранный инструмент хакера. Что, конечно же, навеяно массовой культурой, фильмами про хакиров и тп. Си действительно очень сложный инструмент, но это не комплимент, поскольку сложность математическая (то есть неортогональность), а не интеллектуальная ("сложно значит он умный"). Сложные языки в плане интеллектуальном - это ML, clean, ocaml, haskell. То, где нужны солидные знания математики, теории категорий и CS, а не зубрежка лайфхаков.
Короче говоря, всё это наносное и попсовое понимание инженерного дела. Питон ничем не хуже Си, а во многом конечно лучше, потому что ортогональнее.
> Питон ничем не хуже Си, а во многом конечно лучшеТы сделал мой день.
Подожди вот он каАак напишет видеодрайвер на пистоне! ... для ёдра на расте! :))))И
уйдёшь ты в туман,
грустным :(танка, если что :)))
>haskell
>где нужны солидные знания математики, теории категорийНет, это миф.
> Си действительно очень сложный инструментСи на самом деле совсем не сложный инструмент, он в той же области где и ассемблер, просто намного удобнее ассемблера. Сложность Си только в том, что програмист должен, ОБЯЗАН понимать аппаратную структуру, как оно там все под капотом работает и тогда приходит понимание что железо и иструмент управления им - это слияние тел для создания чего то уникально нового. А вот когда понимание у водителя нет как оно там в моторе все работает, получаются казусы, ну и плюс человеческий фактор.
Тренд на вовлечение в индустрию жадных, не особо любящих професию людей привел к тому, что они без понимания начали косячить и пришлось придумывать абстракции, лишь бы увеличить скорость разработок и ограничить "програмистов" от ошибок, в итоге имеем массу языков специального приложения и даже имеем раст, который вроде бы может как и Си, но в итоге куча сложных абстракций, которые просто про банальное - "вы идиоты, вы все равно делаете ошибки, поэтому будете писать, по безопасным правилам языка", но в итоге то ничего не поменялось, на абстракцию железа добавили кучу механизмов не существующих в реальности, усложнив и без того сложное. А сложное, оно это против правил природы, все гениальное - простое
Всё не правда, но как концепция — красиво 👍
> А сложное, оно это против правил природы, все гениальное - простое1. Процессор -- не природа, это искусственное изделие.
2. Если сложное против правил природы, то весь современный IT против правил природы, сложность минимально приемлимой для пользователя программы превосходит всё, что в состоянии понять отдельно-взятый человек.
3. Сложность природы, на деле, ещё выше. Я почитываю статейки биологов, о том как клетки работают, и я заверяю тебя, всё что создаёт человек в подмётки не годится. Когда осьминог, следуя инструкциям ДНК собирает белок, а потом следуя другим инструкциям создаёт другой белок, который редактирует первый, чтобы повысить морозоустойчивость... и это вместо того, чтобы в ДНК сразу вписать правильный код белка... Или ихние каскады фосфориляции, эпигенетика, и прочая-прочая, там всё настолько сложно, что я удивляюсь как биологи ещё не двинулись кукухой все.
> Процессор -- не природа, это искусственное изделие.Что значит искуственное? С чего бы это супер пупер человеки - природа, а проц - нет? Раз проц создан продуктами природы, из тех же компонентов что и человеки, на той же земле, значит процессор это тоже часть природы, естесвенное так сказать развитие (которое судя по всему заменит в будующем медленные протеиновые организмы)
> весь современный IT против правил природы
Ну это вы зря, если вы посмотрите внимательно, эпоха развития компютеризации очень даже напоминает то как это натурально в природе, много проб и раз получилось, потом из этих маленьких "получилось" слепили как юниксах из много маленьких команд что-то нужное и так далее по восходящей. Где то что-то отвергли а где-то развили дальше и так из маленьких веточек в уже довольно приличное дерево преобразились. Вы посмотрите карту сетевых роутов, не напоминает спины нейронов?
> Когда осьминог, следуя инструкциям ДНК собирает белокВот прям сидит осминог на коралле, и манипулирует там щупальцами, собирает новое ДНК :)))
а люди блин косолапые, только только CRISPR-ом разве что научились пользоваться :)
Я смотрю вы серьёзно так начитались :)Значит осьминогу можно собирать там свои процессоры на ДНК, а человеками сделанный процессор из песка, фиг, - не природа?
Нечестно как то и обидно...
> я удивляюсь как биологи ещё не двинулись кукухой все.Так у них так же как и в И.Т., работают в конкретном узком направлении, ни один АЙТИ-шик не может знать всего, так и у них. Но в биологии там очень много имперического, т.к. до конца нет понятия как оно там под капотом всё работает
> Что значит искуственное?Сделанное человеком. Есть продукты жизнедеятельности человека, которые считаются естественными, но CPU не из их числа.
> Ну это вы зря, если вы посмотрите внимательно, эпоха развития компютеризации очень даже напоминает то как это натурально в природе
Если захотеть, то всё что угодно напоминает всё что угодно. Это одно из ключевых свойств человеческой психики, и вам следует научиться держать его под контролем, чтобы не ставить бессмысленных знаков равенства. Чтобы избежать бессмысленных, достаточно всегда держать в голове цель, с которой вы проводите сравнения выстраивая параллели.
> а люди блин косолапые, только только CRISPR-ом разве что научились пользоваться :)
Да, совершенно верно. В пробирке они что-то там могут сделать вероятностно, с браком в 50% (число я от балды взял, сорри), потом пересадить в клетки и через некоторое время глядя на клетки, выкинуть те, в которых бракованный ДНК, но в живой клетке подредактировать ДНК, не разнеся клетку в мелкую щепу, человекам не под силу.
> Значит осьминогу можно собирать там свои процессоры на ДНК
У осьминога нет процессоров. Процессор обрабатывает команды одна за другой, самое что близкое в клетке к этому можно найти, это рибосомы, которые транслируют инструкции РНК в последовательность аминокислот. Впрочем, не только они, есть всякие белки которые собирают РНК по ДНК и тп, эти операции копирования/трансляции тоже последовательные. Но только они обладают свойством последовательности. Всё остальное работает скорее по термодинамическим правилам. Никакой последовательности, никакой локализации. Каскад фосфориляции можно рассматривать как цепочку химических реакций, в которой реагируют молекулы которые оказались в нужном месте в нужное время, и он вовсе не последовательный. N+1 реакция не дожидается завершения реакции N. Биологи рисуют их как последовательные, но это либо ограничение способа записи, либо ограничения человеческого интеллекта.
Просто у осьминогов в клетках есть белки, которые взаимодействуют с определёнными РНК внося в них корректировки. При этом я давно задаюсь вопросом, как это вообще работает? Вот появилась эта РНК в цитоплазме, чтобы она была отредактирована белком, она должна сначала столкнуться с белком, а потом с рибосомой. Если рибосома найдёт эту РНК первой, то она создаст белок по неотредактированной копии. Я предполагаю, что оно примерно так и работает. иРНК как я понимаю многоразовые, и рибосомы могут много копий белков настругать работая с одной молекулой иРНК, но когда рибосома заканчивает с иРНК, есть шансы что эта иРНК будет отредактирована прежде, чем столкнётся с рибосомой снова. И если этот процесс продолжается достаточно долго, то концентрация неотредактированных иРНК упрётся в ноль. А то, что в процессе какое-то количество белков было создано неправильно, это не беда, потому что другие какие-то механизмы подбирают нерабочие белки и отправляют их на переработку в отдельные аминокислоты.
Называть всё это "программой" можно только сильно расширив понятие программы, забыв про привычное определение алгоритма. Это можно называть процессором, но если слово процессор понимать не как CPU-like, а заметно более расширенно.
https://www.science.org/content/article/octopuses-rewrite-th...
> Я смотрю вы серьёзно так начитались :)
Да. Во-первых, мне всегда нравится сталкивать мои ментальные модели описания реальности с реальностью. Причём сталкивать с хорошего такого размаха. Очень красиво получается, когда осколки моделей летят во все стороны. Во-вторых, меня завораживает Сложность. В любом её проявлении, в IT или в природе или ещё где. Большинство людей не понимает Сложности, не уважает её так, как следовало бы, и не возносит ей молитвы перед сном. А я не могу им объяснить насколько они недооценивают сложность, и подозреваю что это невозможно: Сложность невозможно понять, потому что она сложна, но как можно объяснить _понятно_ то, что по-определению недоступно пониманию? Я, впрочем, не теряю надежды, потому что я ведь как-то вышел на тот уровень понимания, который у меня есть? Вот я и продолжаю поиски, выискивая Сложность везде, где только можно, и пытаяесь её понять до тех пор, пока мозги не начинают отказывать.
Я отмечу, что люди в большинстве своём, отказываются слушать мои объяснения, падая жертвой иллюзии понимания: люди практически всегда думают, что они понимают окружающий их мир, даже если их познания о реально происходящем сводятся к нулю. И поэтому как не ставь их понимание под сомнение фактами, они просто перекатываются на другой бок, и думают что теперь-то они точно понимают, потому что знают на два факта больше, чем до разговора со мной. Люди лентяи и ненавидят пользоваться своим мозгом.
> Я отмечу, что люди в большинстве своём, отказываются слушать мои объясненияБлин, как же я сразу не раскусил, что вы не человек :)
Сорри, но абстрактные дискусси нет время...
Вот не надо тут этих намёков. Дискуссию в абстрактные дебри отправили вы, когда начали рассуждать о том, что процессор это естественно, а абстракции поверх него уже нет. Эта метафизика естественности-абстрактности вашего авторства.
Сказки для зумеров про безглютеновый особо близкий к аппаратуре Си. Что в нем аппаратного? PEEK/POKE на указателях сделать можно? Вот это поддержка железа, вот это инструмент!
> Что в нем аппаратного?А с кем он там по вашему там разговаривает? Не с процом, не с памятью, не с регистрами ?
> Вот это поддержка железа, вот это инструмент!
Вот с это места можно по-подробнее, а что же тогда в вашем понятии другие, "правильные" языки делают?
Да выдыхай OpenEcho :)многабукфф вида "PEEK/POKE" - видел?
Перед тобой - штудент 1973 г кафедры больших желез :)
Правда походу он еЯ не окончил, но вот что даёт BASIC возможность писать хоть какой то системный софт - помнит :) Наверно за это и выгнали :)PS: А Си там лет на 7 позже преподавать начали :)
>Перед тобой - штудент 1973 г кафедры больших желез :)Через год после отмены рабста в России.
>PS: А Си там лет на 7 позже преподавать начали :)
Не ври. Сишку в вузах Союза не преподавали. Вы все начинали с C++ в 1990-х.
>А с кем он там по вашему там разговаривает? Не с процом, не с памятью, не с регистрами ?А другие, "не аппаратные" языки что, не с процом/памятью/регистрами работают? Программисту С этого всего не видно. Стандарт С определен для некоторой абстрактной С машины, которая да, была настоящей во времена PDP-11, но больше нет.
>Вот с это места можно по-подробнее, а что же тогда в вашем понятии другие, "правильные" языки делают?
Правильный аппаратный язык позволяет получить доступ ко всей функциональности процессора. Можно, например, из чистой, стандартной сишочки без ассемблерных вставок получить значение флага переноса? Установить sp? Воспользоваться векторным сопроцессором?
>> А с кем он там по вашему там разговаривает? Не с процом, не с памятью, не с регистрами ?
> А другие, "не аппаратные" языки что, не с процом/памятью/регистрами работают?Я разве не то же самое сказал? :-/
> Программисту С этого всего не видно.
И в большинстве логике и не надо, а для прецезионной работы достаточно ассемблерных вставок
> Можно, например, из чистой, стандартной сишочки без ассемблерных вставок получить значение флага переноса? Установить sp? Воспользоваться векторным сопроцессором?
Сделать язык более высокого уровня чем ассемблер и затем вернуться обратно? Разве не весь смысл был (и есть) в том чтобы оперировать на более высоком уровне?
> Правильный аппаратный язык позволяет получить доступ ко всей функциональности процессора.Эта работа для ассемблера, что работать **с конкретным** ЦПУ/микроконтроллером "в лоб". А сишка чтоб работать с многими железяками уровнем повыше чем пинцет и микроскоп, но без понимания того чем оно управляет (на ассемблерном уровне) язык легко превращается в автомат в руках обезьяны
Такой вопрос может возникнуть только у человека, который никогда не писал на си проектов крупнее чем хелловорлд.
Так-то нормальный программист конечно стремится по возможности чем-нибудь заменять язык, в котором крайне легко случайно прострелить себе ногу.
>нормальный программист конечно стремится по возможности чем-нибудь заменять язык, в котором крайне легко случайно прострелить себе ногу.Толсто.
> только у человека, который никогда не писал на си проектов крупнее чем хелловорлдНе угадал.
о тебе никто не говорит, тем более, что показать что-то сложнее хелло ворлда ты не сможешь
> о тебе никто не говорит, тем более, что показать что-то сложнее хелло
> ворлда ты не сможешьЕсли бы ты умел читать и понимать прочитанное, ты бы заметил, что пользователь eugener высказался о человеке, у которого возник вопрос "что может заставлять писать на питоне", то есть обо мне. С учётом таких твоих талантов, показывать тебе даже студенческий хелло ворлд не имеет смысла.
>Что может заставлять писать на питоне людей, умеющих писать на Си?Отсутствие ООП (не закатом солнца вручную) в Си?
Есть мнение(С) что классы нужны только гуйне ;-)
потому что у них есть то, чего у тебя отродясь не было, и не будет
Ээээ... категорическое _не желание_ писать на C при наличии хоть какой-нибудь альтернативы, не?
После всех приключений с ntpd от одного названия не по себе, даже пресвятая приставка sec не поможет.
chrony рулит!
> Система сборки WafНеадекваты.
Лучше бы сборочную систему на lua использовали если хочется быть нитакимикакфсе.
А если фонатам хочется питона - то meson.
> chrony рулит!100%