итс май лайф ([info]cousin_it) wrote,
@ 2006-10-24 18:23:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Господи, как я ненавижу программировать. Я бы с таким удовольствием сейчас сходил куда-нибудь потанцевать, но не хочу.

Программирование, наверное, имело смысл на больших машинах с зеленой мигающей командной строкой. Но последние 20 лет программисты создают уже не программы-инструкции-компьютеру, а вещи. Вещи — это не алгоритмы и не последовательности инструкций. Хорошую вещь надо делать из материала, из дерева или камня, а не из команд типа "добавить event listener туда-то". Попытки сделать живую, материальную вещь из функций без состояния (Haskell) мне кажутся еще более безумными…

В отличие от многих программистов, у меня нет и никогда не было мечты написать компилятор или ультракрутое ядро чего-то там. Десять лет назад я впервые увлекся программированием, нарисовав крутящийся кубик на экране. Какие технологии сегодня могут дать нам такие кубики? Единственная надежда IT как индустрии — это не Haskell или K, а HTML и Flash. И Microsoft Excel. И LiveJournal. Профессиональное программирование должно стать такой же узкой нишей, как разработка автомобильных двигателей. Мой собственный домашний проект направлен на то, чтобы приблизить этот светлый миг, убив большой кусок рынка "офисной автоматизации".

А если через десять лет на интервью меня спросят про C++ templates или что-то еще в этом роде, я поищу другую работу. Не хочу быть "профессионалом", лучше схожу потанцую.



(Post a new comment)


[info]olga_lru
2006-10-24 08:45 pm UTC (link)
хи. вовка заговорил про танцы :))

(Reply to this) (Thread)


[info]cousin_it
2006-10-24 08:52 pm UTC (link)
скоро я буду нормальным человеком

(Reply to this) (Parent)(Thread)


[info]olga_lru
2006-10-24 09:05 pm UTC (link)
нормальным - это как?! ;))
это бросишь программировать и не пойдешь на танцы?

(Reply to this) (Parent)(Thread)


[info]cousin_it
2006-10-24 09:20 pm UTC (link)
хм

не все так просто. я должен тщательно все обдумать

(Reply to this) (Parent)(Thread)


[info]olga_lru
2006-10-24 09:25 pm UTC (link)
ого! это ты серьезно думаешь о судьбе программирования в твоем будующем??
если что, оно с танцами на самом деле никак не связано :))
хотя я уже беспокоюсь за учебу своего браться - бедолага подсел на мои танцы :)) теперь всюду ходит: и на занятия, и на вечеринки :))

(Reply to this) (Parent)(Thread)


[info]olga_lru
2006-10-24 09:25 pm UTC (link)
своего братца, т е

(Reply to this) (Parent)


[info]cousin_it
2006-10-24 09:50 pm UTC (link)
я не знаю, что будет =)

(Reply to this) (Parent)


[info]_qwerty
2006-10-25 12:41 am UTC (link)
Лично мне максимальную радость доставляют не компиляторы (написавши пару, дальше, как и везде, стабильно пишешь их по привычке), а оригинальные решения мелких задачек. Если эти задачки являются частью чего-то большего практически значимого, то хорошо. Если нет, то тоже.

Вот, кстати, одна из старых, но до сих пор любимых - бесстековый обход ациклического графа.

(Reply to this) (Thread)


[info]cousin_it
2006-10-25 08:26 am UTC (link)
Без стека == без рекурсии?

(Reply to this) (Parent)(Thread)


[info]_qwerty
2006-10-25 09:28 am UTC (link)
Очевидно, != :)
Рекурсию всегда можно смоделировать при помощи цикла и стека в виде массива.

Если исходная формулировка не ясна: есть некоторый ациклический граф в памяти (арность не важна, может быть переменной) и совсем немного локальных переменных (скажем, регистров). Никакой другой памяти нет. Нужно его обойти, начиная с заданной вершины, посетив каждый узел хотя бы раз. Если быть совсем точным, то обойти нужно ту компоненту связности, которой принадлежит заданная вершина, ибо никуда более попасть все равно нельзя.

Никаких рабочих флажков в узлах не предусмотрено. Реентерабельности не требуется.

Экий я зануда.

(Reply to this) (Parent)(Thread)


[info]cousin_it
2006-10-25 10:44 am UTC (link)
Нужно представить себе, что граф это лабиринт, и идти вдоль правой стены, пока не вернешься в исходную точку.

(Reply to this) (Parent)


[info]cousin_it
2006-10-25 10:51 am UTC (link)
Нет, я придумал неправильно. Подумаю еще.

(Reply to this) (Parent)


[info]cousin_it
2006-10-25 01:14 pm UTC (link)
Решил.

Нужно идти вдоль правой стены, пока не придешь в исходную вершину. Для этого нужно уметь всегда определять, какая стена правая. А для этого достаточно в каждой вершине сказать, как выходящие из нее ребра "упорядочены по часовой стрелке". Это упорядочение можно получить, если рассмотреть указатели на соседние вершины как int'ы и упорядочить их.

Перевод сказанного в вид "без стека и без рекурсии" довольно тривиален, не буду расписывать :-)

(Reply to this) (Parent)(Thread)


[info]_qwerty
2006-10-25 08:16 pm UTC (link)
Гм, не, никаких упорядоченных нумеров узлам и ссылкам на них приписывать нельзя. Запомнить текущее ребро в узле нельзя - никаких рабочих флагов, включая и номер текущего ребра, там класть некуда. И нет, граф не задан заранее в каком-то хитром виде, например, с упорядоченными узлами и ссылками. На выравнивание и пустые биты в указателях тоже рассчитывать нельзя - это была бы хотя и практическая, но не красивая задача.

Для простоты можно предположить, что узел - это просто структура типа struct Node { int Info; Node* node1; Node* node2 };

У задачи есть красивое решение. Приятно именно программу написать.

(Reply to this) (Parent)


[info]foror
2006-10-25 07:07 am UTC (link)
А если через десять лет на интервью меня спросят про C++ templates или что-то еще в этом роде, я поищу другую работу. Не хочу быть "профессионалом", лучше схожу потанцую.

Поддерживаю! :)

(Reply to this) (Thread)


[info]cousin_it
2006-10-25 08:26 am UTC (link)
Grazie =)

(Reply to this) (Parent)


[info]alrad
2006-10-25 09:04 am UTC (link)
Я бы с таким удовольствием сейчас сходил куда-нибудь потанцевать, _но не хочу_.

Я так и не понял твоего отношения к танцам.

(Reply to this) (Thread)


[info]cousin_it
2006-10-25 10:39 am UTC (link)
Так и было задумано

(Reply to this) (Parent)


Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…