Как стать автором
Поиск
Написать публикацию
Обновить
64
4.5
Вадим Румянцев @vadimr

Разработчик аппаратно-программных комплексов

Отправить сообщение

За более чем 30 лет работы в IT я зарабатывал на жизнь программированием на языках Assembler, Basic, C, C++, Fortran, Lisp, Pascal, PL/I, Python, REXX, Scheme (в алфавитном порядке), а также руководством подобными процессами. Занимался я преимущественно системным программированием, то есть, так сказать, производством средств производства; но не только.

Вот какой получился рейтинг языков программирования в моей жизни:

– больше всего строк кода я написал на ассемблере, причём в основном бесплатно, в процессе обучения;
– больше всего по продолжительности я программировал на Паскале (не то чтобы это было свойство самого Паскаля, а просто время такое было);
– больше всего удовольствия я получал от использования PL/I;
– самой дорогой в перерасчёте на строчку кода была моя программа на REXX (так сказать, антипод ассемблера в моей карьере);
– самый сложный код я писал на Scheme.

Выводов делать не буду.

Теги:
+9
Комментарии4

Новое средневековье.

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

Известно, что когда Аристотель написал, что у мухи 8 ног, то почти полторы тысячи лет это утверждение воспроизводилось со ссылками на авторитет, и никому в голову не приходило пересчитать (ну он там вроде на самом деле писал про подёнок с 4 ногами и 4 крыльями, но кому какое дело). Сейчас эти времена вернулись, любой ребёнок спросит: “Алиса, сколько ног у мухи?” вместо натурного эксперимента.

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

Пруфов не будет.

Теги:
Всего голосов 17: ↑15 и ↓2+17
Комментарии13

О компиляторах.

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

Ядро Linux по этому определению может называться очень большим проектом. Под него специально затачивается gcc.

У IBM есть даже специальный язык PL/S, используемый специально для написания операционной системы. Компилятор PL/S не доступен вне IBM.

Теги:
Всего голосов 4: ↑4 и ↓0+5
Комментарии0

О языках программирования.

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

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

С другой стороны, стандарт Scheme принимают голосованием программистов по спорным вопросам.

Чем дольше живу, тем больше ценю Лисп и Фортран.

Теги:
Всего голосов 7: ↑5 и ↓2+6
Комментарии20

Индексация массивов (портал в ад).

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

На самом деле, тут можно выделить шесть разных видов языков программирования:

  1. Массивы индексируются с 0.

  2. Массивы индексируются с 1.

  3. Массивы индексируются с 0, но можно указать другое начало.

  4. Массивы индексируются с 1, но можно указать другое начало.

  5. Массивы индексируются только с явно указанного начала.

  6. Массивов в языке нет.

Языков явно выраженного типа (3) мне сходу не удаётся припомнить (хотя в Delphi и C++ есть некоторые движения в этом направлении), а в остальном известные мне языки довольно равномерно распределены между типами.

Нумерация с 0 упрощает индексную арифметику.

Нумерация с 1 соответствует естественному натуральному счёту и математической нотации.

В связи с этим, к нумерации с 1 тяготеют в основном языки для вычислительного применения (Фортран, Матлаб, Джулия). Страшно представить, сколько проклятий получили авторы NumPy от людей, переводящих алгоритмы с Фортрана.

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии14

Пошла мода писать манифесты, напишу и я что-нибудь эдакое.

Система не сводится к сумме своих частей.

Поэтому декомпозиция, как метод проектирования, ущербна.

Встаёт вопрос, как же тогда нам просто описывать сложное? Здесь скрывается некоторая смысловая тонкость. Мы можем просто описывать сложное сложными словами. А дальше настоящее наше дело – представить эти сложные слова другими, простыми словами, которыми описать сложное сложно, но технически возможно.

То есть метаязыковая абстракция решает, и DSL – наше всё.

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

Теги:
Всего голосов 6: ↑5 и ↓1+5
Комментарии2

Откуда берётся мусор?

Рассмотрим следующую программу:

#include <stdio.h>
int main () {
  int a [100];
  int i;
  for (i=0; i<100; i++)
    printf ("%d ", a[i]);
  return 0;
}

При компиляции без оптимизации и вызове в Linux она выдаст некоторые числа, являющиеся мусорным содержимым памяти. Кто-нибудь в состоянии объяснить, откуда конкретно они берутся, и почему каждый раз разные при последовательных запусках программы?

Казалось бы, если это просто содержимое адресов, на которые приходится соответствующая секция исполняемого модуля, то оно должно бы сохраняться от запуска к запуску?

Объяснение в стиле “потому что виртуальные адреса мапируются на реальные рандомно” я и сам могу дать, хочется более глубокого понимания. Компьютер – вещь детерминированная, в нём случайность – это не познанная закономерность.

Upd: ответ дан уважаемым @alexvangog в закреплённом комментарии.

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии13

Информация

В рейтинге
412-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Project Manager, Software Architect
Lead