Pull to refresh

Comments 37

MiRC - как программа, действительно, не самое лучшее.

Но вот сам по себе IRC - это очень большой пласт интернет-культуры. Не все его застали конечно (равно как и news-группы), но тем не менее.

вместо IRC теперь Discord.

Подобного типа чат система никогда не умрёт.

postgre - это какое-то непонятное слово, применяемое вместо признанного сокращенного названия одной популярной СУБД, видимо, от недостатка уважения к разработчикам этой СУБД.

Что касается PostgreSQL, скорее всего, значительный период разработки прошел благодаря общению разработчиков в IRC-чатах. Так что принижать значимость IRC не стоит.

А вот по всплывающей рекламе соглашусь - нечем гордиться.

По-моему статья не про гордость, а про влияние.

В 2009 году Facebook добавила в интерфейс своей социальной сети код, изменивший мир — кнопку «Like».

Это о чем? Хотите сказать что до этого не было системы оценок сообщений? Да хоть на том же Хабре, чтобы далеко не ходить. Или что такого нового?

Новизна в том что нет варианта dislike, а на других сайтах можно было ставить как +, так и -.

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

UFO just landed and posted this here
Тоже по стилистическим корявостям и неточностям показалось, что это должен быть перевод. Посмотрел — плашка «Перевод» в начале статьи не выставлена. Но местами — дичь несусветная.

действительно Quake 3. Видимо ID ассоциируется больше с думом

UFO just landed and posted this here

Строка с завершающим нулём

char yellow[26] = {'y', 'e', 'l', 'l', 'o', 'w', '\0'};

Самая катастрофическая ошибка проектирования в истории вычислительной техники

Может nil он-же null, будет не менее катастрофичным?

К тому-же null, после С, успел отметиться в других языках.

UFO just landed and posted this here

Это не про 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 и не ввели нормальные строки в стандарт языка (понятно, что полностью избавиться от старых строк не получилось бы) - вот это, как мне кажется, было ошибкой.

Си-строки это отличный вариант для межинтерфейсного взаимодействия, отчасти поэтому в std::string всё ещё есть метод data(). Всё остальное можно реализовать на уровне приложения любым доступным способом.

UFO just landed and posted this here

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

UFO just landed and posted this here

Немного странный подбор, но, как обычно, дело вкуса. Для меня, например, код бинарного поиска сравним с изобретением колеса. Перейти с линейной сложности на логарифмическую - потрясающее достижение.

А что тут такого революционного? Этот алгоритм в целом самоочевиден, он был известен задолго до возникновения 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

Sign up to leave a comment.