Pull to refresh
10
Антон Онопко@OnoIt

User

3
Subscribers
Send message
Все таки 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-кода, но ничего нового или интересного в этой технологии нет или журналист не смог узнать об этом.
Замечательно, что Вы нашли себя в новом качестве сценариста трэш-фильмов про программистов. Наверное, стоит на этом сконцентрироваться.
Лучше выкладывать в четверг, тогда будет день реальной работы и два выходных на исправление страшных ошибок. Или два выходных для обкатки заказчиком.

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Бэкенд разработчик
Старший
Java
Java Spring Framework
Spring Boot
Apache Maven
Hibernate
Базы данных
Python