Pull to refresh
193
0.6
Alexander Pevzner @apevzner

Программист на все руки

Send message

Я про это и говорю, что нет такого чётного числа, которое невозможно получить не сложив 2 простых.

Почему? А вдруг, одни пары простых будут давать меньшую сумму, чем наше число, а другие - большую, а точно никакая пара не попадёт?

Интересно, это троллинг или вы правда не понимаете?

Каждое чётное число можно представить в виде суммы пары нечетных чисел. Например:

20 = 3 + 17 = 5 + 15 = 7 + 13
24 = 3 + 21 = 5 + 19 = 7 + 17 = 9 + 15 = 11 + 13

Но не во всех таких парах оба слагаемых простые.

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

Архитектура базируется на куче движков и библиотек

В программе для PDP-11, которая использовалась в данном случае? Там 64К (килобайта) памяти на всю машину, куда там засовывать движки и библиотеки?

Потому, что он двухрежимный. Можно срелять слабым пучком электронов прямо по человеку. А можно стрелять сильным пучком по железке, чтобы вышибить из неё рентгеновское излучение (в этом режиме электроны не долетают до человека). А вот если пучок настроить, как для рентгена, а железку не подсунуть, то будет того-сь.

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

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

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

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

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

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

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

Каждая пара оснований может принимать одно из четырёх значений (A, T, C или G).

Они там находятся комплементарными парами. A всегда связана с G, T - с C. Так что делим количество значений пополам.

Вы так вкусно рассказываете про open source.

Извините за прямой вопрос и не сочтите за грубость, а сами-то вы в нём кто?

Мне не нравится подход C++, в котором std::string это такая сишная структура, обмазанная в три слоя темплейтами, которые делают вид, что это такой строковый тип.

Компилятор реально видит сишную структуру. Отладчик видит сишную структуру. А человек видит строку, и это обман, потому что реально там никакой строки нет, а есть сложная сишная структура.

Иметь в языке хотя бы небольшой, но встроенный, набор высокоуровневых абстракций (в Go это строки, map-ы, слайсы, каналы и гороутины) оказывается весьма удобно.

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

Там написано, что в PHP нет GC, и однажды выделенная память никогда не освобождается.

А в спецификации PHP написано, что там есть GC.

Кому верить?

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

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

k8s сам написан на Go, и его самого никто не страхует.

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

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

И это имеет то достоинство, что компилятор и инструменты понимают, что это такое, а не имеют дело с непонятными им структурами, как в случае C++.

Всегда можете явно позвать utf8.Valid

Или надо, чтобы оно автоматически звалось и паниковало при несоответствии? Лично я бы предпочёл, что оно не.

И меня устраивает, что строка - это immutable массив байтов, и засовывание туда некорректной последовательности, это не UB в стиле C/C++.

PHP: Умирает после каждого запроса
Go: Умирает после N запросов/M минут/OOM

Ну вообще-то, умирать не должно ни в PHP ни в Go. Наверное все же проблема не в языке.

Cи разработчики - вообще не перешли:

Я сишник, мне комфортно с Go. Во-первых, как сишнику, мне очень понятны все эти фокусы с append-ом, который может реаллоцировать память, а может и не. Во-вторых, язык простой, в духе Си. С понятной и прозрачной семантикой. С исправленными проблемами Си (например, отсутствие неявных преобразований между многочисленными сишными int-ами). Контроля Go даёт достаточно и позволяет делать интересные вещи. Например, использовать библиотечный http или архиватор с самодельной сущностью, которая не является сокетом или файлом, но реализует соответствующие интерфейсы.

GC меня не парит.

Интерфейсы...что мешало добавить слово implements. Ведь явное, лучше чем неявное

type MyType struct {
    . . . .
}

var _ = io.Writer((*MyType)(nil)) // Won't compile if MyType is not io.Writer

// Write implements io.Writer interface for the *MyType.
func (w *MyType) Write(biif []byte) (int, error) {
    . . . .
}

Затем вычитаем 1 из n. Таким образом, n будет возрастать на каждом прогоне цикла.

Боюсь, что если из n вычитать 1, n будет скорее уменьшаться, чем возрастать...

К надёжности - да. Насчет производительности, я в этом совсем не уверен. Зависит от задачи.

Пример с systemd уже привели. Таких сервисов полно. Даже условный d-bus, он особо-то и не нагружен.Ну или CUPS, какая там у него нагрузка?...

Information

Rating
2,003-rd
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

System Software Engineer, Software Architect
Lead