Home

Advertisement

Customize

raindog too

Nov. 10th, 2009

04:38 pm - The Go programming language

Наконец-то в публичном доступе, язык программирования Го, детище Роба Пайка и компании:
 http://golang.org/
(не имеет ничего общего с одноименной игрой).

Aug. 12th, 2009

07:19 pm - О названиях фотоаппаратов

Кенон = измененное Кваннон (японское имя бодхисаттвы Авалокитешвары)
Коника = Конишироку + Камера
Лейка = Лейтц + Камера
Минолта = Механизмы + инструменты + оптика + линзы + Ташимы
Никон = Ниппон Когаку + Цейсс-Икон (бизнес-связи с Цейссом нет, назвали так просто чтобы напоминало о классном аппарате)
Олимпус = компания была переименована из Такачихо (гора, на которой живут японские боги) в честь греческой горы Олимп.
Пентакс = Пентапризма + Контакс (имя было выкуплено компанией Асахи у Контакса)

07:15 pm - Radical honesty

X. прочел книгу "Radical honesty". Спрашиваю его: "Ну как, теперь всегда говоришь только правду, даже по мелочам?" Говорит: "Да". Хм...

Jul. 28th, 2009

02:34 pm - Этимологическое: uppercase and lowercase

Откуда в этих словах "-case"? Вот откуда:
Средневековые наборщики хранили шрифты в ящиках, разделенных перегородками на отделения, по отделению на каждую букву. Ящиков было два. Заглавные буквы хранились в верхнем ящике (upper case) а строчные буквы - в нижнем (lower case).

02:28 pm - Dangers of overhype

Rails to Ruby: " Я тебя породил разрекламировал, я тебя и убъю".

Jul. 23rd, 2009

03:26 pm - Рекурсия?

Возможно, вы имели в виду: рекурсия

Jul. 14th, 2009

Jul. 11th, 2009

01:34 pm - Медианный фильтр

Как обычно, запись может быть интересна только программистам.

Задача: имплементировать обощенный медианный фильтр.

Тут два ключевых вопроса:
1) Как сделать интерфейс фильтра как можно более общим и удобным для использования?
2) Как сделать имплементацию эффективной?
Комментарии... )

Jul. 9th, 2009

03:19 pm - О резиновой уточке

Загадка:

Зачем Керниган держит на своем столе желтую резиновую уточку?

(кто не знает кто такой Керниган - можно заменить на "один известный программист")

Jul. 7th, 2009

06:55 pm - Чтобы понять рекурсию, нужно сперва понять рекурсию

Любопытный вопрос со Stackoverflow:

Возможна ли задача, которую можно решить только рекурсивно?

На первый взгляд, ответ - "нет". Потому что можно определить явный стек и переписать рекурсию как цикл.
Однако у меня смутное подозрение, что можно придумать задачу о самой задаче, или задачу, в которой ее решение - один из объектов самой задачи.


Jun. 28th, 2009

12:03 am - Программистское, о регрессе

Увлеченные "прогрессом" от С к С++ к Java, все, кажется, забыли, зачем в С было разделение на .h и .c. Затем, что в .h-файле описывается интерфейс, а в .c - имплементация. Они разделены, и это правильно. Я могу использовать любые функции из <stdio.h>, не задумываясь, как они имплементированы. И могу подставлять другие имплементации во время сборки программы. В том числе любые mock-имплементации. Никаких Factory, никаких dependency injection, хо-хо!

Jun. 24th, 2009

Jun. 23rd, 2009

07:46 pm - Судоку как лакмус

Эта запись может быть интересна только программистам, которые интересуются TDD (или решением судоку).

Но это просто феерично. Наткнулся на серию статей, написанных одним из главных гуру TDD и  XP. О том, как написать решалку для судоку, применяя TDD. Читать тут: часть1, часть2, часть3, часть4, часть5 (последняя!).

Я давно хотел сформулировать, чем мне не нравится TDD и Agile Methodologies. В-общем, если вчитаться эти заметки от гуру, и сравнить их, например, с этим решением судоку от Питера Норвига, то выводы каждый может сделать свои. Совсем разные.
Мои выводы )

Jun. 22nd, 2009

02:59 pm - Об оптимальной длине функций

Некоторые идеологи от программирования нас учат, что функция должна быть короткой, чем короче, тем лучше. Бывает, доходят даже до того, что запрещают двойной вложенный scope или вообще учат обходиться без conditionals, заменяя их на виртуальные функции. Почему так лучше - объясняется обычно с идеологических позиций и не подкрепляется никакими экспериментальными подтверждениями.

Но вот некоторые экспериментальные исследования (цитата из Стив МакКоннелл, CodeComplete 2nd edition):

  • Basili and Perricone found that routine size was inversely correlated with errors: as the size of routines increased (up to 200 lines of code), the number of errors per line of code decreased (Basili and Perricone 1984).
  • Another study found that routine size was not correlated with errors, even though structural complexity and amount of data were correlated with errors (Shen et al. 1985).
  • A 1986 study found that small routines (32 lines of code or fewer) were not correlated with lower cost or fault rate (Card, Church, and Agresti 1986; Card and Glass 1990). The evidence suggested that larger routines (65 lines of code or more) were cheaper to develop per line of code.
  • An empirical study of 450 routines found that small routines (those with fewer than 143 source statements, including comments) had 23 percent more errors per line of code than larger routines but were 2.4 times less expensive to fix than larger routines (Selby and Basili 1991).
  • Another study found that code needed to be changed least when routines averaged 100 to 150 lines of code (Lind and Vairavan 1989).
  • A study at IBM found that the most error-prone routines were those that were larger than 500 lines of code. Beyond 500 lines, the error rate tended to be proportional to the size of the routine (Jones 1986a).
Исследования все старые, конечно. Есть ли более свежие?

Jun. 21st, 2009

03:27 pm - Для программистов

Степанов об ООП:

STL is not object oriented. I think that object orientedness is almost as much of a hoax as Artificial Intelligence. I have yet to see an interesting piece of code that comes from these OO people. ... I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras - families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting - saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms - you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work.


Jun. 20th, 2009

03:12 pm

Гром и молния!

А вообще, это же должно постоянно случаться, особенно раньше, - церкви были самыми высокими сооружениями. Громоотводы появились не так давно. А как же раньше?

02:35 pm - Загадка - что за продукт?

Антиоксиданты и регуляторы кислотности: аскорбиновая кислота Е–300, лимонная кислота Е–330, винная кислота Е–334, янтарная кислота Е–363, ниацин Е–375.
Красители: рибофлавин Е–101, хлорофилл Е-140, каротин Е–160а, антоциан Е–163, таннин Е-181.
Ароматизаторы: амил и изоамил ацетаты, этила ацетат, фенилэтила ацетат, этила n-бутаноат, диэтила малонат, метил-3-этил-бутаноат, 1,5-додеканолид.
Консерванты: уксусная кислота Е–260, молочная кислота Е-270.
Усилители вкуса и запаха: глютаминовая кислота Е–620.
Эмульгаторы и загустители: пектин E-440.
Прочее: цистин Е–920.
Также, содержит ядовитый цианид амигдалин.

Что же это такое?

Jun. 19th, 2009

08:53 pm

Сайт stackoverflow.com - лучшее, что я обнаружил за последний год или даже больше. Кто не знает - это сервис вопрос-ответ для программистов. Один из создателей сервиса - Джоэл Сполски. И сделано все грамотно, и уровень участников высокий.

Правда, затягивает сильно. С утра до вечера там торчу. Примерно как USENET 10-15 лет назад, только публика гораздо серьезнее, и есть ощутимый feedback по-существу. Флеймов почти нет, ответов по сути - очень много и они приходят даже не через часы, а через минуты.

Jun. 16th, 2009

Jun. 14th, 2009

Navigate: (Previous 20 Entries)