Programming sucks – Telegram
Programming sucks
81 subscribers
12 photos
188 links
Когда вы меняете направление всех стрелок в конусе, вы получаете коконус.
Download Telegram
Это победа. В одной из моделей боинга в софтине, управляющей генераторами, каждые 248 дней переполняется память и генераторы вырубаются. Проблемы в авиации решают красиво: кривую софтину обнуляют, обесточивая самолёт во время техобслуживания o\

Problem:
This condition is caused by a software counter internal to the GCUs that will overflow after 248 days of continuous power. We
are issuing this AD to prevent loss of all AC electrical power, which could result in loss of control of the airplane
.

Solution:
This AD requires a repetitive maintenance task for electrical power deactivation.

(c) https://s3.amazonaws.com/public-inspection.federalregister.gov/2015-10066.pdf, по наводке https://news.1rj.ru/str/sqaunderhood/217
В Израиле решили тренировать алгоритм, чтобы он мог принимать решения в суде. Анализировали массив простых дел с ясным контекстом происшествий, по которым принимаются бинарные решения — либо штраф, либо 15 суток. Можно было проследить за историей вынесения приговоров в течение нескольких лет и заложить в алгоритм. Приходит новое дело, судья выносит свой вердикт, а люди, ведущие эксперимент, сообщают, какое решение по нему принял алгоритм. На те решения, которые принимает машина, немедленно набрасываются аналитики данных и начинают их изучать. И выясняют чудовищную вещь: у нее есть большой суточный ход. В начале рабочего дня машина выносит более мягкие приговоры, потом жесткость растет, потом снова падает и постепенно восстанавливается. Почему? Оказалось, что чем ближе по времени к обеду, тем приговоры злее, а чем живые судьи более сытые, тем они мягче. И обработка алгоритмом массива дел позволила выявить эту закономерность. Там было много еще разных сюрпризов: оказалось, что алгоритм чудовищный и с точки зрения гендера, и с точки зрения того, какого цвета подсудимый.

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

(с) https://www.colta.ru/articles/society/25546-iz-zhizni-algoritmov-intervyu-andrey-sebrant-iskusstvennyy-intellekt, via https://news.1rj.ru/str/techsparks/2615
This book is firmly in the tradition that we have come to expect from this author; and my reaction to it is much like my reaction to its predecessors: I think three quarters of it is superb, and the other quarter is outrageous nonsense; and the reason is that Morris Kline really doesn't understand what today's mathematics is about…

(с) https://en.wikipedia.org/wiki/Mathematics:_The_Loss_of_Certainty#cite_ref-6
Formality prioritizes evaluation from the beginning, providing solid compilers to common targets such as JavaScript, Haskell and the EVM…

(с) https://github.com/moonad/formality
Next time you see an argument about whether Javanoscript is a cancer or a boon to our industry, or you see someone like me getting angry about modern apps being crap, ask yourself which camp is speaking. Are they championing beautiful code? Performance and a "deep understanding"? Or do they just want to get work done and ship product?

Ultimately code is code. Even though we have different reasons for writing software, what we write is (usually) compatible. And even when its not (looking at you, Haskell) - there's always a lot of ideas we can learn from and steal.

We all owe each other a lot, after all. Without language wonks we would still be writing assembly. Without systems programmers we wouldn't have operating systems, and haskell and javanoscript would be unusably slow. And without product engineers, everyone else would be forced to write CSS. And trust me, nobody wants that.

(c) https://josephg.com/blog/3-tribes/
One of the most precious attributes of the Haskell community over the last twenty-five years has been its supportive, friendly, and respectful dialogue.

(с) https://mail.haskell.org/pipermail/haskell/2016-September/024995.html
The developers of the WebAssembly spec aren’t dumb. For the most part it’s an extremely well-designed specification. However, they are weighed down by WebAssembly’s legacy. WebAssembly started out not as a bytecode, but more like a simplified binary representation for asm.js. Essentially it was originally designed to be source code, like JavaScript. It would be a more-efficient representation thereof but it still wasn’t a proper virtual machine instruction set. Then, it became a register machine, and only at the last minute did it switch to stack-based encoding for the operators. At that point, concepts like locals were quite entrenched in the spec. Not only that, but for the most part the WebAssembly specification team were flying blind. No streaming compiler had yet been built, hell, no compiler had yet been built. It wasn’t clear that having locals would be problematic - after all, C gets by just fine using local variables that the compiler constructs the SSA graph for.

(c) http://troubles.md/wasm-is-not-a-stack-machine/
У нас нет стандарта. С середины 80-х появлялось много библиотек. Сегодня многие пользуются библиотекой Asio, которую технически можно назвать стандартной. Думаю, что в C++23 мы добавим её. Но начинаются разговоры, что нужно больше поддержки. Помимо Asio, нужно добавить то, чего не дает Asio. И это обыденный хаос в мире C++. У нас даже нет стандарта для места хранения библиотек. Никто как следует не позаботился о создании хорошего сообщества C++. Даже удивительно, как этот язык пережил десятилетия конкуренции.

(с) Бьярне Страуструп, https://habr.com/ru/company/jugru/blog/525288/
Название IPR, как вы могли догадаться, придумал я в свойственной мне «креативной манере», полностью оно звучит так: Internal Program Representation. Мне не нравится, когда его называют AST (Abstract Syntax Tree) потому, что это не синтаксис, не абстрактный и не древо. Но люди все называют это таким образом.

(c) Бьярне Страуструп
Мне кажется, C++ не создан для 80–85% программистов. Всегда стоит помнить об изначальной задумке создания языка: этот язык — распределенная система с прямым доступом к железу и немного повышенным уровнем сложности.

(c) Бьярне Страуструп
Поучительную историю о реиспользовании кода вспомнили в одном чатике. Посоны (airbus с подрядчиками) строили ракету, притом не в первый раз, пятую версию, и заюзали код от предыдущей, в котором ну точно ошибок не было (сотня успешных запусков). А далее по классике, новая ракета должна была лететь по другой траектории с другой скоростью:

- Velocity was represented as a 64-bit float
- A conversion into a 16-bit signed integer caused an overflow
- The current velocity of Ariane 5 was too high to be represented as a 16-bit integer
 ...
- The explosion occurred at an altitude of approximately 4 km, and the debris was scattered over an area of about 12 square km in the savanna and the surrounding swamps. 

Статья с картинками и ссылками на репорты: https://hownot2code.com/2016/09/02/a-space-error-370-million-for-an-integer-overflow

Разборы кода (то, что выше несколько упрощенная интерпретация):
https://forum.oberoncore.ru/viewtopic.php?f=152&t=6389

https://stackoverflow.com/questions/52792505/how-is-it-possible-in-ada-to-have-a-code-failure-from-assigning-a-64bit-floati/54345040#54345040
To make things worse, it is common for OCSP to use HTTP - I’m talking about good old plaintext HTTP on port 80, none of that HTTPS rubbish.

(c) https://blog.jacopo.io/en/post/apple-ocsp/
Practical type systems are often too complex to permit an affordable formal investigation, especially since language developers often lack the necessary expertise

(с) Type Systems for the Masses: Deriving Soundness Proofs and Efficient Checkers, Sylvia Grewe and others
There is a religious war between people who think dynamic checking is better and people who think static type checking is better. I believe that one of the reasons why this war has gone on for so long is that both groups have good points. (They also have some not-so-good points.) Unfortunately the two groups typically don’t acknowledge the good points made by the other group as being good points. My evaluation of the points, given below, will probably annoy both the static typing fans and the dynamic typing fans.

(c) What is Gradual Typing | Jeremy Siek
https://wphomes.soic.indiana.edu/jsiek/what-is-gradual-typing/
Fun fact о понтах конца XIX века:

The treatise is written in Latin, which was already somewhat unusual at the time of publication, Latin having fallen out of favour as the lingua franca of scholarly communications by the end of the 19th century. The use of Latin in spite of this reflected Peano's belief in the universal importance of the work – which is now generally regarded as his most important contribution to arithmetic – and in that of universal communication.

(c) https://en.wikipedia.org/wiki/Arithmetices_principia,_nova_methodo_exposita
«I am properly equipped here»

(c) Anders Hejlsberg, https://www.youtube.com/watch?v=IGw2MRI0YV8
Treat with suspicion anyone who says abstractions are fundamentally leaky; maybe these people are just bad at abstraction.

(c) Sandy Maguire, Algebra-Driven Design
The goal of abstraction is to shield us from the reality…

(c) Sandy Maguire