Как стать автором
Обновить
226
0
Илья Струков @iley

Программист

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

Да, я всё ещё хочу заниматься этим, когда мне исполнится 56 лет

Время на прочтение3 мин
Количество просмотров52K
Ты правда хочешь продолжать заниматься этим, когда тебе исполнится 50 лет?
Больше ли стресса в больших масштабах разработки? Должен признать, что да. Все-таки, это удел молодых.
Нет, это удел глупых. Мне 55 и я занимаюсь профессиональным программированием с 1981, а начал ещё когда был в школе, в 1973 или около того. И что я выяснил за это время, так это то, что сам по себе кодинг до полусмерти не имеет смысла.

Мой недавний пост «Почему я не занимаюсь сверхурочной работой бесплатно и вам не советую» остаётся самым популярным из моих постов каждую неделю с момента его написания. Так что, похоже, не я один считаю, что кодинг до полусмерти — это пустая трата времени. Но не буду повторяться.
Читать дальше →
Всего голосов 157: ↑147 и ↓10+137
Комментарии85

Цитаты о языках программирования

Время на прочтение3 мин
Количество просмотров40K
Что учёные, писатели и программисты думают о популярных языках программирования.

Все языки


«Есть два подхода к программированию. Первый — сделать программу настолько простой, чтобы в ней очевидно не было ошибок. А второй — сделать её настолько сложной, чтобы в ней не было очевидных ошибок.»
Tony Hoare. Профессор, занимался реализацией Алгол 60, сейчас исследователь в Microsoft Research.


Algol 60 (позже повлиявший на C)


«Я не мог устоять перед искушением добавить в язык нулевой указатель (null), просто потому, что его так легко было реализовать. Это привело к бессчётному множеству ошибок, уязвимостей и сбоев, которые нанесли ущерб, наверное, в миллиард долларов за последние сорок лет.»
Tony Hoare.
Читать дальше →
Всего голосов 256: ↑235 и ↓21+214
Комментарии103

Копирайт на команду /bin/true

Время на прочтение3 мин
Количество просмотров20K
Среди всей этой шумихи по поводу авторских прав есть один забавный пример — это крайний случай использования копирайта, который породила AT&T где-то в 1980-х. Речь идёт о программе /bin/true. Это пустая программа, которую обычно используют только для того, чтобы писать бесконечные циклы (while true do ...) в шелл-скриптах. Программа «true» не делает ничего, а только завершается с нулевым кодом. Такого поведения легко добиться — достаточно просто создать пустой файл и сделать его исполняемым, что и делали создатели первых Unix-систем. Пустой файл интерпретируется как шелл-скрипт, который не делает ровным счётом ничего. А, поскольку у него это вполне успешно получается, шелл возвращает нулевой код завершения. Но юристы AT&T решили, что это не помешает защитить копирайтом.
Читать дальше →
Всего голосов 246: ↑229 и ↓17+212
Комментарии62

Разница между bin, sbin, usr/bin, usr/sbin

Время на прочтение3 мин
Количество просмотров56K
30 ноября 2010 года Дэвид Коллиер (David Collier) писал:
Я заметил, что в busybox ссылки разложены по этим четырём директориям.
Есть ли какое-то простое правило, чтобы определить, в какой директории какая из ссылок должна лежать…
К примеру, kill лежит в /bin, а killall — в /usr/bin… Я не вижу никакой логики в таком разделении.

Вы, наверное, знаете, что Кен Томпсон и Дэннис Ритчи создали Unix на PDP-7 в 1969-ом. Так вот, примерно в 1971 они проапгрейдились до PDP-11 с парой дисков RK05 (по 1,5 мегабайта каждый).

Когда операционная система разрослась и перестала помещаться на первом диске (на котором была расположена корневая ФС), они перенесли часть на второй, где располагались домашние директории (поэтому точка монтирования называлась /usr — от слова user). Они продублировали там все необходимые директории ОС (/bin, /sbin, /lib, /tmp ...) и складывали файлы на новый диск, потому что на старом кончилось место. Потом у них появился третий диск, они примонтировали его в директории /home и перенесли туда домашние директории пользователей, чтобы ОС могла занять всё оставшееся место на двух дисках, а это были целых три мегабайта (огого!).
Читать дальше →
Всего голосов 243: ↑233 и ↓10+223
Комментарии149

Преимущества Common Lisp

Время на прочтение15 мин
Количество просмотров34K
Лисп часто рекламируют как язык, имеющий преимущества перед остальными из-за того, что он обладает некоторыми уникальными, хорошо интегрированными и полезными фичами.

Далее следует попытка выделить набор особенностей стандартного Common Lisp, кратко и с примерами.

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

Текст по большому счёту основан на списке особенностей CL и обзоре CL Роберта Стренда (Robert Strandh).
Читать дальше →
Всего голосов 83: ↑78 и ↓5+73
Комментарии120

Решая не ту проблему

Время на прочтение2 мин
Количество просмотров1.2K
Время от времени я вступаю в обсуждения о том, что я писал, чтобы узнать, каковы общие настроения и не сделал ли я какую-нибудь ужасную ошибку, о которой мне просто никто не сказал. Самые неожиданные комментарии, которые я встретил, касались того, насколько быстро этот сайт загружается, ведь для большинства страниц нужно всего два запроса — один на HTML-файл и один на CSS, — в сумме меньше десяти килобайт, и что это впечатляет.

Отчасти эта скорость обусловлена удачей. Я использую виртуальный хостинг и не могу контролировать работу других сайтов на том же сервере.

Но у меня есть чёткое представление о том, как люди взаимодействуют с блогом: они его читают. Все кроме меня делают с сайтом prog21 одно и то же — они открывают страницы и читают их. Нет никакой магии в том, чтобы раздавать простые статические страницы. Что удивительно — так это то, что большинство разработчиков движков блогов решают не те проблемы.
Читать дальше →
Всего голосов 121: ↑97 и ↓24+73
Комментарии75

Самые важные решения — не технические

Время на прочтение2 мин
Количество просмотров1.2K
Меня время от времени озадачивают вопросами в связи с мимолётной заметкой, которую я сделал в 2010, по поводу того, что я больше не программирую ради заработка. Это правда. Я не работал в качестве full-time программиста с 2003-го. Короткая версия этих вопросов — «Почему?». Более длинная версия — «Слушай, ты ведёшь супер-технический блог о программировании и, похоже, ты знаешь все эти штучки, но неужели ты не хочешь работать программистом?».
Читать дальше →
Всего голосов 61: ↑46 и ↓15+31
Комментарии29

Пишем свою ОС: Выпуск 1

Время на прочтение6 мин
Количество просмотров265K
Данный цикл статей посвящён низкоуровневому программированию, то есть архитектуре компьютера, устройству операционных систем, программированию на языке ассемблера и смежным областям. Пока что написанием занимаются два хабраюзера — iley и pehat. Для многих старшеклассников, студентов, да и профессиональных программистов эти темы оказываются весьма сложными при обучении. Существует много литературы и курсов, посвящённых низкоуровневому программированию, но по ним сложно составить полную и всеохватывающую картину. Сложно, прочитав одну-две книги по ассемблеру и операционным системам, хотя бы в общих чертах представить, как же на самом деле работает эта сложная система из железа, кремния и множества программ — компьютер.

Каждый решает проблему обучения по-своему. Кто-то читает много литературы, кто-то старается поскорее перейти к практике и разбираться по ходу дела, кто-то пытается объяснять друзьям всё, что сам изучает. А мы решили совместить эти подходы. Итак, в этом курсе статей мы будем шаг за шагом демонстрировать, как пишется простая операционная система. Статьи будут носить обзорный характер, то есть в них не будет исчерпывающих теоретических сведений, однако мы будем всегда стараться предоставить ссылки на хорошие теоретические материалы и ответить на все возникающие вопросы. Чёткого плана у нас нет, так что многие важные решения будут приниматься по ходу дела, с учётом ваших отзывов.
Читать дальше →
Всего голосов 293: ↑282 и ↓11+271
Комментарии223

Вышел GDB 7.1

Время на прочтение1 мин
Количество просмотров1.9K
Вышла новая версия замечательного консольного отладчика GDB. Изменения:
  • Добавлена поддержка мультипрограммной отладки (т.е. теперь можно работать с несколькими программами в рамках одной сессии отладки)
  • Добавлена поддержка Position Independent Executable (PIE)
  • Поддержка платформ Xilinx MicroBlaze и Renesas RX
  • Улучшения в поддержке Python (напомню, что для GDB можно писать скрипты на Python)
  • Расширена поддержка C++
  • Новые возможности при работе с tracepoint'ами
  • Улучшения в записи процессов (Process Record)
  • Улучшения в протоколе удалённой отладки
Сам я новую версию пока что не «щупал», так что за всеми подробностями, пожалуйста, обращайтесь к документации.

К своему удивлению я не нашёл на хабре топиков, посвящённых этой программе. Поэтому хочу спросить: Интересно ли будет вам прочитать топик по основам отладки в GDB?
Всего голосов 61: ↑56 и ↓5+51
Комментарии21

Вышли Mercurial 1.5 и TortoiseHg 1.0

Время на прочтение1 мин
Количество просмотров2.7K
Вышла новая версия распределённой системы управления версиями Mercurial и user-friendly клиента для этой системы — TortoiseHg.

Список изменений под катом
Всего голосов 50: ↑44 и ↓6+38
Комментарии39

Katahdin: метапрограммирование на грани фантастики

Время на прочтение2 мин
Количество просмотров2.3K
Katahdin — это интерпретируемый язык программирования, в котором синтаксис и семантика могут изменяться во время исполнения. Чтобы идея стала ясна, сразу приведу пример с официального сайта. В примере определяется операция получения остатка от деления ("%" в C, «mod» в Pascal).
class ModExpression : Expression {
  pattern {
    option leftRecursive;
    a:Expression "%" b:Expression
  }
 
  method Get() {
    a = this.a.Get...();
    b = this.a.Get...();
    return a - (b * (a / b));
  }
}

Читать дальше →
Всего голосов 62: ↑54 и ↓8+46
Комментарии93

Vim и Visual Studio

Время на прочтение3 мин
Количество просмотров16K
Долгое время я использовал только один текстовый редактор — Vim. Но вот я пришёл на новую работу и ситуация изменилась. Мне было предложено работать над относительно большим (> 300000 строк) коллективным проектом. Проект написан в Visual Studio, в качестве системы контроля версий используется MS Source Safe. Мысль писать в VS мне сразу не понравилось, но, поскольку все остальные условия меня более чем устраивали, я согласился.

Несколько дней я поработал в «пустой» VS и понял, что долго так продолжаться не может. Слишком уж неудобным показался редактор студии после нескольких лет регулярного использования Vim. И я начал искать способ продолжать работу над проектом и при этом использовать свой любимый редактор.

Непродолжительный поиск дал следующие варианты частичного решения проблемы.
Читать дальше →
Всего голосов 58: ↑40 и ↓18+22
Комментарии199

Юмор: У системы выходной

Время на прочтение1 мин
Количество просмотров909
Пришёл я сегодня на работу — сроки горят, приходится работать сверхурочно. Запускаю систему, которую мы разрабатываем — и вижу Exception.

Начали разбираться. Выяснилось, что в системе для статистики вычисляется такое выражение
X = (число дней когда система использовалась) / (число рабочих дней с начала месяца).

Так вот если начало месяца приходится на выходной — система в этот день не работает! И этой ошибке, похоже, уже несколько лет.
Всего голосов 31: ↑24 и ↓7+17
Комментарии7

Идея для блога: Linux не для всех

Время на прочтение1 мин
Количество просмотров788
В последнее время на Хабре популярностью пользуется блог «Linux для всех». И среди постов в этом блоге встречаются вещи, интересные как для новичков, так и для искушённых пользователей. Однако такая широкая направленность блога в отдельных ситуациях бывает неудобна. Например, иногда хочется рассказать о какой-нибудь тонкости, понятной и доступной лишь небольшому кругу специалистов, не мешая при этом большинству не столь хорошо осведомлённых людей. Или напротив, хочется почитать только сообщения людей с большим опытом работы с системой, глубоко понимающих обсуждаемые проблемы.

Именно для таких целей я предлагаю создать отдельный блог. Название «Linux не для всех» по сути отражает его идею. Не хочу чтобы меня поняли неправильно, поэтому подчеркну, что создание такого блога — это ни в коем случае не попытка выделить среди Хабраюзеров какую-то элиту, цель его — просто отделить узкоспециализированные статьи от статей общей тематики и при этом собрать вместе.

Как вы считаете, найдёт ли подобный блог свою аудиторию и нужен ли он вообще сообществу?
Всего голосов 32: ↑23 и ↓9+14
Комментарии16

C++ и дружба

Время на прочтение1 мин
Количество просмотров1.7K
Открыл для себя забавный факт: оказывается, у классов в C++ могут быть воображаемые друзья. Пример:

class Fred { <br>
    friend class Joe; <br>
public: <br>
    void dance() { <br>
        //какой-то код <br>
    } <br>
}; <br>
<br>
int main() { <br>
    Fred guy; <br>
    guy.dance(); <br>
    return 0; <br>
} <br>
//конец программы <br>


Заметьте, что в программе нет объявления класса Joe, однако программа компилируется без ошибок (и без предупреждений). То есть Джо не существует, его можно назвать воображаемым другом Фреда. Такое возможно, поскольку отношение дружбы влияет только на компиляцию класса, который объявлен другом. А класс, объявивший кого-то своим другом, будет скомпилирован одинаково независимо от того, что представляют собой его друзья и существуют ли они.
Всего голосов 29: ↑19 и ↓10+9
Комментарии10

Как обойтись без MS Office Automation

Время на прочтение1 мин
Количество просмотров1.4K
Передо мной встала задача: надо импортировать данные из программы на .Net в XLS-файл (формат MS Excel). Нужно также уметь задавать для данных в файле шрифты, цвета, параметры печати и прочие бесполезные свойства.

Microsoft предлагает для этого запускать Excel и обращаться к нему. И это — единственный способ работы с форматом, официально поддерживаемый компанией. Само собой разумеется, что на каждом компьютере, на котором будут запускать мою программу должен быть установлен MS Office. И никого не смущает, что даже для записи банальнейшей таблицы из 10 ячеек в файл приходится запускать многомегабайтного монстра — Excel.

В общем, я решил найти другой путь. Как оказалось, существует множество библиотек, работающих с XLS-файлами напрямую, без запуска Excel. Но подавляющее большинство из них — платные.

Из бесплатных библиотек я выделил две:
  • MyXLs — написана на C#, лицензия MIT, поддерживает базовое чтение и запись, форматирование. Проект развивается.
  • JExcelAPI — написана на Java, LGPL, очень мощная библиотека — поддерживает практически всё, что может понадобиться (включая картинки и формулы)

Полнофункциональной бесплатной библиотеки для .Net я, к сожалению, не нашёл. Однако, JExcelAPI без труда запускается с помощью IKVM. Это, конечно, не самое изящное решение, но оно работает. А в тех случаях, когда нужны только базовый функционал можно использовать MyXLs.
Всего голосов 10: ↑8 и ↓2+6
Комментарии10

Операционная система — браузер

Время на прочтение4 мин
Количество просмотров19K
Прочитал топик про HabraOS и вспомнил про идею, которая родилась у меня несколько месяцев назад. Погуглив немного, я нашел целых два проекта, реализующих аналогичную систему, но всё равно решил написать подробное изложение идеи. Может наведёт кого-нибудь на мысли.
Далее много текста
Всего голосов 117: ↑77 и ↓40+37
Комментарии142

Информация

В рейтинге
Не участвует
Откуда
Dublin, Dublin, Ирландия
Дата рождения
Зарегистрирован
Активность