Comments 37
А как же posgre, postgre и язык SQL? Уж точно поважнее MiRC'a и всплывающей рекламы.
MiRC - как программа, действительно, не самое лучшее.
Но вот сам по себе IRC - это очень большой пласт интернет-культуры. Не все его застали конечно (равно как и news-группы), но тем не менее.
postgre - это какое-то непонятное слово, применяемое вместо признанного сокращенного названия одной популярной СУБД, видимо, от недостатка уважения к разработчикам этой СУБД.
Что касается PostgreSQL, скорее всего, значительный период разработки прошел благодаря общению разработчиков в IRC-чатах. Так что принижать значимость IRC не стоит.
А вот по всплывающей рекламе соглашусь - нечем гордиться.
В 2009 году Facebook добавила в интерфейс своей социальной сети код, изменивший мир — кнопку «Like».
Это о чем? Хотите сказать что до этого не было системы оценок сообщений? Да хоть на том же Хабре, чтобы далеко не ходить. Или что такого нового?
Новизна в том что нет варианта dislike, а на других сайтах можно было ставить как +, так и -.
А как же быстрое вычисление корня из Doom???
Строка с завершающим нулём
char yellow[26] = {'y', 'e', 'l', 'l', 'o', 'w', '\0'};
Самая катастрофическая ошибка проектирования в истории вычислительной техники
Может nil он-же null, будет не менее катастрофичным?
К тому-же null, после С, успел отметиться в других языках.
Это не про null pointer, а про null-terminated strings. Совершенно другой пласт багов. (2)
Может nil он-же null, будет не менее катастрофичным?
еще раз - есть совершенно другой пласт багов, который выглядит более катастрофичным.
Почему-то "null-terminated strings" не называют The-Billion-Dollar-Mistake.
Разумеется, не называют! Потому это слишком мелко для null-terminated strings, для них и эпитет The-Trillion-Dollar-Mistake - слишком слабый. Эта ошибка гораздо серьёзнее, т. к. приводит к уязвимостям, а не просто к прекращению работы.
А так-то, скорее всего, просто у Тони Хоара (с самокритического высказывания которого и пошёл такой эпитет) с рефлексией лучше, чем у Денниса Ритчи.
Самая катастрофическая ошибка проектирования в истории вычислительной техники
Ну-да, ну-да. Высказывание от авторов "введение null стало ошибкой на миллион долларов" и "проверяемые исключение в Java это фундаментальная ошибка проектирования". И ещё с дюжину подобных набрать можно. Программировать нормально надо, а не рукожопить. Си был придуман как платформонезависимая замена языкам ассемблера, потому что в то время был зоопарк архитектур, и с переносимостью было всё плохо. И авторы отлично справились со своей задачей, не перегрузив язык ненужной семантикой (чего нельзя сказать о С++ с его ложным don't pay for what you not use). После развития оптимизирующих компиляторов стало почти невозможно написать на голом ассемблере лучше чем на Си. И я вот не припомню, чтобы ANSI C запрещал создавать свои структуры хранения строк аля Pascal-style или что-то посложнее, но нет же - всем плохим танцорам вечно мешает этот нуль-терминатор.
Добавлю, используйте snprintf(), а не snprintf() и будет вам счастье!
А чем snprintf() отличается от snprintf()?..
А вы внимательный!
Конечно я описался, имелось ввиду: используйте snprintf (), а не sprintf (). Пока набирал сообщение, понял, что не я описался, а телефон меня "исправил"...
Проблема не только в небезопасности, а в том, что некоторые операции с ними - медленные.
Но авторов можно понять - такие строки не требуют почти никаких дополнительных усилий, кроме реализации поддержки литералов и написания ряда библиотечных функций. Создание настоящего строкового типа (которым сишные строки сложно назвать) потребовало бы гораздо больше усилий от разработчиков языка, а в те времена были гораздо более важные вещи.
А вот то, что позже сишные строки не объявили deprecated и не ввели нормальные строки в стандарт языка (понятно, что полностью избавиться от старых строк не получилось бы) - вот это, как мне кажется, было ошибкой.
Немного странный подбор, но, как обычно, дело вкуса. Для меня, например, код бинарного поиска сравним с изобретением колеса. Перейти с линейной сложности на логарифмическую - потрясающее достижение.
А что тут такого революционного? Этот алгоритм в целом самоочевиден, он был известен задолго до возникновения IT и использовался в тех же библиотеках, картотеках и прочих хранилищах, где все лежит по порядку.
Да и простыми обывателями тоже применялся, кто стремится как-то оптимизировать свои усилия в бытовых и рабочих вопросах.
У нас в 3 классе была задача, в стиле:
Есть плёнка, в ней 90 минут аудиозаписи. Маша ищет на этой плёнке любимую песню. Ей надо 5-10 секунд чтобы понять, где песня - раньше или позже.
Вопрос: как ей быстрее всего найти эту песню?
Ну и бинарный поиск действительно был очевиден, хоть не все дети справились. Но никто и не знал, что он назывался бинарным поиском.
module.exports = leftpad;
function leftpad (str, len, ch) {
str = String(str);
var i = -1;
if (!ch && ch !== 0) ch = ' ';
len = len - str.length;
while (++i < len) {
str = ch + str;
}
return str;
}
2016: left-pad npm package
Интересно, что в разных первоисточниках (?) приводятся немного разнящиеся наборы "строк":
https://slate.com/technology/2019/10/consequential-computer-code-software-history.html
https://muse.jhu.edu/pub/267/monograph/book/103803
Строки кода, которые изменили мир