Как стать автором
Обновить
10
0
Антон Онопко @OnoIt

Пользователь

Отправить сообщение
Все таки UB — специфика дизайна языка. В универсальном ассемблере нельзя сказать, как будет обрабатываться переполнение на конкретном процессоре. А при программировании на ассемблере для конкретного процессора — можно.

Про Java пока не будем, а давайте обсудим пример отсюда:
blog.llvm.org/2011/05/what-every-c-programmer-should-know_14.html
Код:
void process_something(int size) {
  // Catch integer overflow.
  if (size > size+1)
    abort();
  ...
  // Error checking from this code elided.
  char *string = malloc(size+1);
  read(fd, string, size);
  string[size] = 0;
  do_something(string);
  free(string);
}

становиться после оптимизации компилятора
void process_something(int *data, int size) {
  char *string = malloc(size+1);
  read(fd, string, size);
  string[size] = 0;
  do_something(string);
  free(string);
}

Мне кажется, это немного печальная оптимизация.
И такой быстрый код совсем не нужен.
Вы пишите, что «почти любая строка в C++ потенциально может стать источником UB» — сомневаюсь, что это правда. Если же это так, то это ошибка дизайна языка.

Проблема С++ это то, что компилятор считает, что программист очень умный и его программа без UB и поэтому ее можно агрессивно оптимизировать. Поэтому перед изучением С++ стоит реально оценить, достаточно ли ты умный для этого языка и в случае сомнений выбрать другой язык.
Это замечательно. Есть ли такое для всех компиляторов С++?
Не так просто — посмотрите habrahabr.ru/post/216189.
А утечку ресурсов можно обнаружить при тестировании.
И если это была бы всегда ошибка на этапе компиляции, то писать на C++ было бы значительно легче.
Жалко, что не спросили как правильно объяснять студентам Undefined Behaviour в С++.
Это правда. Джобс умер в 2011, но уже четвертый год его продолжают цитировать так, как будто он живой.
Реле ненадежные и медленные. А на лампах будет много электричества есть.
Ассемблер для каждого типа процессоров свой. Названия команд могут совпадать.

А если посмотреть на год создания модели, то станет ясно, что .com файлы и int 21 будут придуманы через 15 лет.
Ассемблер написал. Полагаю, что модель на VHDL или Verilog будет небольшая, но лучше будет перейти на двоичное кодирование.
Да, но диапазон чисел ограничен — 0..999.
Хорошая статья, но большая. Как писали выше, можно было бы разбить на несколько.
И, поскольку это не перевод одного источника, а компиляция нескольких, стоит
добавить список использованной литературы.
Я бы отдельно выделил эту книгу:
Артур Кларк: Голоc через океан — история связи меду континентами начиная с 19 века и заканчивая серединой 20.
Зачем эта статья программистам? Искать учебники мы умеем.

Напишите в самом начале, до кнопки.
В данном случае — в фразе «если у вас мозг не приспособлен ...» и т.д. И у всей статьи такой тон: Дартаньян рассказывает.
Вашу статью сложно читать — она написана «рваным» языком. Такое изложение неплохо для конспекта лекций,
но мы здесь не нерадивые студенты, а Вы — не преподаватель.

К сожалению, стиль нельзя просто поправить — для начала попробуйте писать небольшие статьи и подробнее, с примерами излагать логические цепочки с уважением к читающим.

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

Можно попросить небольшие куски кода PHP и их транслированные эквиваленты на C++ с комментариями: вот здесь kPHP смог определить тип переменных и получился быстрый код, а здесь нет. Наверняка у разработчиков есть тесты, там вряд ли есть коммерческие секреты.

В общем, больше деталей для программистов.
Я люблю программирование за то, что в нем нет места тро-ло-ло, а есть код, который работает. Из интервью мы узнали, что Вконтакте обладают технологией ускорения PHP-кода, но ничего нового или интересного в этой технологии нет или журналист не смог узнать об этом.
Замечательно, что Вы нашли себя в новом качестве сценариста трэш-фильмов про программистов. Наверное, стоит на этом сконцентрироваться.
Лучше выкладывать в четверг, тогда будет день реальной работы и два выходных на исправление страшных ошибок. Или два выходных для обкатки заказчиком.

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность