All streams
Search
Write a publication
Pull to refresh
61
0
Павел @Hemml

астрофизик

Send message

В Lisp объектная модель пошла по другой "ветке развития", там у классов нет методов в понимании C++ или Java, а просто определяются функции с явным указанием типов параметров:

(defmethod render ((w widget))
  (error "Don't know, how to render a widget, please define a render for your subclass!"))

(defmethod render ((b button))
  (render a button))

(defmethod render ((c checkbox))
  (render a checkbox))

(defmethod dump ((w widget) stream)
  (format stream "Dump of ~A widget" (class-name (class-of w))))

(defmethod dump ((c checkbox) stream)
  (format stream "Dump of checkbox ~A" (name c))
  (call-next-method)) ;; Тут будет вызван метод для widget с теми же параметрами

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

Изначально такая схема была в госконторах, потому что оклад нельзя было установить произвольно, а, кроме того, обычно имеются бюджетные деньги (которые есть всегда) и внебюджетные, которые обычно есть, но иногда их нет. Оклад платится из бюджета, а внебюджет делится между закупками, всякими неотложными нуждами, типа ремонта, а что останется идет в виде надбавок к зарплате. Возможно, руководство коммерческих предприятий принесло эту схему "не разбираясь" из бюджетной сферы, где оно (руководство) изначально воспитывалось. Причем в бюджетных конторах как раз типичное распределение ближе к 10+90, чем к 50+50. 50+50, скорее всего, заслуга налоговой как раз.

В кожухе выглядит как:

:)

Спасибо!

А что касается MITM, то после случившегося я бы и докерхабу уже не доверял. Мало ли что они будут отдавать в нашу сторону. Если начинаешь бороться за демократию, то трудно бывает остановиться)

У меня в одном месте синхронно упали все запущенные контейнеры, четыре дня назад. У кого-нибудь еще такое случалось? Если это связано с баном докерхаба, то каким образом?!

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

Вообще, это две совершенно разные ветви развития, Фортнан шел по пути совершенствования компиляторов, оставляя архаичные формы в языке, за которые его так не любят. Зато по уровню оптимизации фортрановские компиляторы рвут всех и всё. Лисп же шел по пути совершенствования именно языка и шел этим путем 60+ лет. Его ниша -- сложные алгоритмы, то есть действительно сложные, которые не помещаются в голове программиста целиком. Все модные в разное время концепции программирования или появились сразу в Лиспе или были им приняты в первых рядах. Впрочем, это иногда выливается в вещи типа CLOS, который не очень похож на объектно-ориентированное программирование в других языках, зато более логичен и гибок. Забавно, что два самых старых языка до сих пор остаются лучшими в своих нишах.

А (declare (optimize speed)) пробовали добавить? Типы явно прописать? Лисп очень хорошо умеет в оптимизацию, но он слишком "внимателен" и не включает ее там, где она может сломать универсальность. В том же случае с sqrt, если явно ему не указать, что тип аргумента не отрицателен, то Лисп добавит проверку на отрицательный аргумент и будет учитывать, что возвращаемое значение может быть комплексным числом, а это, в свою очередь, заставит его все места, где оно используется, тоже снабдить проверками. Ну и на счет массивов -- можно сделать их объектами, генерировать и хранить с каждым массивом функцию для доступа к его элементу, которую компилировать "на ходу" в момент создания массива. Тогда ей не придется вытаскивать из памяти размеры массива, например, что сделает доступ примерно таким же быстрым, как в фортране, когда размер массива задан при компиляции, только тут размеры могут быть динамическими. Наконец, есть такая штука, как маросы компилятора в Лисп. Благодаря им, например, может существовать библиотека (!) добавляющая поддержку SIMD-инструкицй процессора в компилятор, который их не поддерживает.

Реализация в языке, это еще и реализация в стандартной библиотеке и поддержка оптимизаций компилятором. Например, какое значение выдаст sqrt(x), если x -- типа real? В каком-нибудь C это будет real, а в нормальном языке это зависит от знака x :)

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

До Lisp надо дорасти) Вообще, это самый, наверное, развитый из всех современных языков, все эти 60 лет он непрерывно совершенствовался.

Форт до сих пор во всяких модных заменах BIOS используется, из массового современного, ЕМНИП, загрузчик Apple, например.

Мне не очень понятно, что именно сейчас зарубежные правообладатели могут предъявить нашим пиратам? Упущенную прибыль? Но они сами отказались от нее, "уйдя из России", их упущенная прибыль равна нулю. Моральный ущерб? У юрлиц нет "морали". Если же они "ушли" не по своей воле, а испугавшись санкций, то им стоит предъявлять претензии к своим правительствам, которые эти санкции ввели. Будет справедливо, если они компенсируют "ушедшим" потери. В любом случае, какие могут быть у них сейчас претензии к россиянам? Роскомнадзор, впрочем, делает хорошее дело, определяя уровень пиратства, это поможет "ушедшим" компаниям более обоснованно требовать у своих правительств компенсации.

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

Они объявляли специальный конкурс на самое плохое название? Я думал, что Microsoft Zune по неблагозвучности никто не переплюнет, но у МТС получилось!

Бог создал Lisp, а дьявол -- Common Lisp :)

В CL, при всей его лисповости, возможны такие грязные вещи, от которых стошнит и фортранщика. Но, именно потому что это Lisp, использование этих дьявольских кундштюков там возможно и даже полезно. То, от чего программа на другом языке превращается в гибрид макаронного монстра и атомной бомбы, в CL делает ее лишь быстрее.

Вообще, если мы уж коснулись вопросов божественного и дьявольского в языках программирования, то стоит упомянуть две книги -- SICP, как книгу "белой магии" программиста и "Common Lisp Recepies", как книгу черной магии. Обе про Lisp, что характерно.

Хорошая статья, спасибо!

У меня есть пара вопросов и один комментарий.

  1. Будет ли Центробанк обязан продавать и покупать црубли по курсу 1-к-1 в любом количестве по первому запросу любого лица?

  2. Будет ли "цифровая копейка"? Если мне нужно, например, доплатить одну копейку налогов (не ржите, реальная ситуация), смогу ли я разменять цифровой рубль на 100 цифровых копеек? Как это будет реализовано технически? А если операция оффлайн?

А комментарий вот какой: надо понять, будет ли у этих црублей история и как будут суды относиться к тому, что у кого-то в кошельке оказался црубль, украденный из другого кошелька. То есть, насколько велики риски при получении платежей црублями. Если суд будет это квалифицировать как "скупку краденного", то риски достаточно велики и они сами по себе стоят денег. То есть или црубли будут приниматься с дисконтом (возможна, кстати, забавная ситуация, при которой црубль, прошедший через большое количество рук, будет цениться меньше, чем новый, только что выпущенный, если история будет доступна). Или сделки будут требовать страхового покрытия. А если у Центробанка будет обязательство по покупке-продаже (см. первый вопрос), то возникнет возможность арбитража и на этом расцветет целый бизнес, а весь банкет будет оплачиваться Центробанком. Не думаю, что он готов к такому. А если обязательств у него не будет, то он может сам неплохо зарабатывать, продавая свежевыпущенные (то есть, безрисковые) црубли на бирже с профитом. Впрочем, можно, конечно, вести тонкую игру, поддерживая профит таким, чтобы с его учетом "свежий" црубль стоил ровно 1 рубль, а сразу же после покупки терял в стоимости. Интересные времена нас ожидают)

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

Впрочем, есть и нетоксичные сообщества. Например, ни один мой (глупый) вопрос по Common Lisp не вызвал негатива. Наоборот, некоторые ответы поразили меня тем, сколько труда взял на себя отвечающий, чтобы показать, как можно извернуться и сделать так, чтобы мой (очень, очень странный, как я теперь понимаю) запрос удовлетворить. А где-нибудь в PHP-сообществе мне бы гору негатива накидали.

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity

Specialization

CFD-моделирование
Lisp
Fortran
C
LATEX
Applied math
Python
SQL
Docker