программирование  смотрите также
 php  (+2)
 javascript 

Магический квадрат

08.09.2007 01:12
Старая шутка про двоичное счисление, а вот типичный пример задачи «для олимпиады».

Типичный потому, что а) решение тривиальное, б) взрослые люди не могут решить, в) в условии задачи две ошибки.

Чтобы два раза не ходить и продолжить тему олимпиад, расскажу, как я не занял абсолютно ничего на олимпиаде по информатике.

Одной из задач было построение магического квадрата со стороной равной 4.

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

Тут и началась мучительная борьба с собой. Дело в том, что для построения магических квадратов есть несколько «некомпьютерных» алгоритмов, особенно для построения частного случая. А от нас как раз требовалось вывести им один квадрат, то есть частного случая было бы достаточно.

Этих алгоритмов, я, естественно, не знал.

Есть и «компьютерные» алгоритмы, типа таких, (там есть пример кода на басике) в стиле «куча вложенных циклов с однотипными проверками».

Кончилось тем, что я за полчаса попытался сам придумать алгоритм построения частного случая, потом понял, что даже если у меня это получится, то это будет смотреться, как voodoo magic.

Я осознал, что от меня ожидали именно кучи вложенных циклов.

Но я не стал их писать, потому что это было очень скучно.

Как я не стал хакером

31.08.2007 02:50
В седьмом классе перешел я в другую школу и другой класс. А они там паскаль учили на информатике. Знал я, разумеется, только БАСИК (и ассемблер, что самое смешное) компьютера ZX Spectrum, потому что в других школах информатики не было, а «Спектрум» дома был.

И буквально через неделю была какая-то контрольная. Задачи абсолютно детские, типа «вывести символы от A до Z». Ну, я, не долго думая, нашел код символа A, нашел код символа Z, написал в цикл и вывод в нем символов с кодами от и до.

Ну и остальные задачи в таком же духе.

Закончил первым. Подходит учитель и, натурально, пугается. Оказывается, «задача» выполнялась проще: паскаль тупо позволяет делать цикл от «A» до «Z». А таблицу символов, коды и прочее они не проходили. Но меня это мало ебало, я знал только Басик.

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

Как вы поняли, знал я, разумеется, только БАСИК (и ассемблер, что самое смешное) компьютера ZX Spectrum, так как у меня всё еще был Spectrum. Паскаль не прижился по причине отсутствия практики, так как PC мне упорно не покупали.

Так что на олимпиаду я пришел с выданной мне дискетой qbasic-а. Который, разумеется, видел впервые. Но Басик он и в африке Басик. Мурыжа кнопку F1 (ура встроенному хелпу), я сделал все задания, нашел баг в условии одного из них, докопался по этому поводу до контролеров и отправился домой.

Вечером мне позвонила охуевшая учительница информатики и поздравила с первым местом.

А в Универ я пошел учиться все равно на журналиста.

ООП, PHP (и идиоты, куда же без них)

07.09.2006 11:24
вообще, изучая продукты жизнедеятельности php программистов, возникает ощущение, что это какие-то марсиане. про разделение данных и представления никто не слышал, что такое классы и как ими пользоваться никто не знает и т.д.

Применять везде и всегда ООП — это бред. Нужно применять тот инструмент, который удобнее. Писать на ООП, например, блог — это убивать глистов напалмом. Бирман про это написал достаточно доходчиво.

«Разделение данных и представления» — еще один бред настоящего программиста™. Php изначально был создан для… вставки кусков кода в html. То есть — хахаха — смешивания данных и представления. Не потому, что язык дефективный, а потому что часто это «смешивание» — оптимальный путь.

Когда настоящий программист™ садиться писать на Php, выходит вот такое гавно, тормозное и глючное. Потому что настоящий программист настолько ограничен «правильной парадигмой», что программировать по-другому уже не может.

На сайте php написано:

PHP is an HTML-embedded scripting language. The goal of the language is to allow web developers to write dynamically generated pages quickly.

И давайте его так и использовать.

Смотри также:
Обещанный пост про PHP
Объектная парадигма провалилась
Horde

Сроки

12.07.2006 15:43
Краткая памятка о сроках по работе с [неразборчиво].

«Сегодня» — завтра.
«Завтра» — напомнить завтра, что уже сегодня (см. «сегодня»).
«В течение недели» — в следующую среду.
«В течение недели, но до выходных, пожалуйста» — в понедельник.
«Через две недели» — месяц.*
«Месяц» — неопределенная, очень большая величина времени.
«Три месяца» — три неопределенные, очень большие величины времени.
«К осени» — когда выпадет снег. Снег выпадает каждый год, поэтому «к осени» является наиболее благоприятным сроком, пропустить который практически невозможно.
«Через год» — не используется, ибо есть «к осени».


* — Популярно заблуждение, что две недели — это 14 дней. Это не так. Две недели — это 14 дней + «в течение недели» (ибо вторая неделя еще не кончилась) + завтра («один день погоды не сделает»). В особых случаях отсчет «двух недель» начинается со следующего понедельника, так выигрывается еще несколько дней.

Если повезет, то в результате выходит месяц срока и опоздание всего на один день («завтра»).

Объектная парадигма провалилась

25.08.2004 12:36
Объектная парадигма провалилась.

Рассматривая Horde, нельзя не согласиться с этим утверждением.

Смотри также:
Обещанный пост про PHP
ООП, PHP (и идиоты, куда же без них)
Horde

SquirrelMail-2.

20.08.2004 19:11
Еще один перл из SquirrelMail.
Вот такое в программировании не прощается вне зависимости от языка.
Цитата из комментария:

A lot of this code is similar to the code in addrbook_search_html.html -- If you change one, change the other one too!

Гениальные идеи

21.04.2004 23:06
Вот, бывает, придумаю гениальную идею и спрашиваю у хакира Болка — хорошая ли идея, будет ли работать?

Оказывается, что идея хорошая и более того — хакир Болк уже эту идею пару раз использовал.

Сразу возникают противоречивые чувства:

1. Досада. Почему про такие вещи нельзя прочитать почти нигде? Нет, я серьезно: куда ни глянь — всюду обсуждения уровня «как передеть переменную выше. например, то где она должна определится на 20 строке, а то где она включается в код на 30 строке, как ее можно передать выше?». На самом деле понятно, почему: 90% людей — идиоты. Всегда и везде. Оставшиеся 10% заняты тем, что молча работают. Если они начнут что-то объяснять людям, то в 90% случаев это будет метание бисера перед свиньями. КПД = 10% — это как-то грустно.

2. Радость. Как хорошо быть умным, придумывать умные вещи и узнавать, что они работают.

Вот, такие дела.

В конце не будет никакой морали.

Анаграммы

24.02.2004 16:08
Измерение IQ навеяло. Задачка для сообразительных. Написать программу (php-скрипт, например), которая берет анаграмму и выводит искомое слово.

Т.е. вводишь, например, «мреипрна», а он тебе выдает «например».

Пишите свои варианты решения в комментарии.

PS. Я придумал отпимальный вариант за пару минут. Еще минут 15–20 у меня бы ушло на его реализацию. Интересно, если это твоя программа, то можно ли ее использоваться при тестировании твоего же IQ?

Foo, bar и FUBAR

30.01.2004 00:52
Для тех, кто все еще не знает, что такое foo и bar и спрашивает у меня это в аське: FUBAR, foo.

Диалог с пользователем

19.12.2003 01:55
«Как написать программу, ведущую диалог с пользователем?». Смешно. Очень.

Craftsmanship

02.12.2003 03:14
Новая статья на Joel On Software.

Making software is not a manufacturing process. In the 1980s everyone was running around terrified that Japanese software companies were setting up «software factories» that could churn out high quality code on an assembly line. It didn’t make any sense then and it doesn’t make sense now. Shoving a lot of programmers into a room and lining them up in neat rows did not really help get the bug counts down.

Написано как обычно хорошо и убедительно, но опять одна банальщина.

Программирование

23.07.2003 18:04
Вот тут довольно забавная подборка «мыслей»

Цитата:

В 1970 г. фирма «Xerox» создала научный центр «Palo Alto Research Center» (PARC) в Пало Альто, Калифорния, где под одной крышей собрала лучшие умы в области информационных технологий того времени и поставила перед ними задачу создания технологий будущего, не заботясь о практической применимости и выполнимости проектов.

Через три года у фирмы было то, что можно назвать персональным компьютером, сеть Ethernet, перекрывающиеся окна и мышь.

И рядом — несколько очень хорошо написанных статей по программированию: раз и два

Производительное кодирование

14.05.2003 04:50
Но что просто выводит меня из себя, так это то, что ещё на первой моей работе я понял — производительное кодирование отнимает у меня, как разработчика, в среднем по два-три часа в день.

А я думал, что я один такой.

Стили программирования на PHP

14.05.2003 00:54
Или как программирует программист (прошу прощение) с мировым именем Смирнов и все остальные.

Я не программист

31.03.2003 00:49
Дальше я пишу о себе всякие хвалебные вещи, читать не обязательно.

I actually hate programming,
but I love solving problems.
Rasmus Lerdorf

Как написано в качестве эпиграфа здесь.

Я на самом деле не программист. Я, конечно, умею программировать, но… не люблю это делать. Я просто люблю решать проблемы (ну и создавать заодно). Я скорее разработчик или дизайнер (дизайнер — это не «оформитель», а, опять таки, «разработчик»). Я умею писать такие ТЗ, что самому читать приятно. Дело в том, что я умею программировать, поэтому мои ТЗ основаны не только на «а вот хочу того и того», а еще и на знании «почему хоть то-то и то-то правильно, а то-то и то-то — нет, и как это все в конце концов реализовать».

Лирическое отступление:

На прошлом месте работы начальник как-то сказал что-то вроде (за точность не ручаюсь, но по духу примерно так) «Вот ты написал два ТЗ, а кому оно нужно? Наш программист сам знает, что нужно». Потом, увидив Spesta, он сказал (дословно): «Блин, классная статистика. Гораздо лучше Киселевской — ты ему ее показывал?». (Диме Кисилеву привет!). При этом я, с присущей мне скромностью, не считаю, что оно лучше запрограммировано. Оно лучше придумано. Именно для этого и нужно ТЗ — не смотря на то, что программист знает, «что нужно», главное — это «как нужно», потому что конечному пользователю все равно общаться с уровнем «как нужно», а «что нужно» его не интересует.

То есть пользователю совершенно не важно, что «нужно собирать такую-то статистику». Ему важно, как потом работать с этой статистикой. Ну, это мы уже залезли, опять же, в интерфейс…

Я тут пару дней думал на тему «Идеальная CMS». Здесь, опять же, проходит грань между программистом и разработчиком. Я придумал пару архитектурных решений и свежих идей, которые «программист» не придумал бы — только потому, что программисту не доводилось так плотно общаться с контентом, как мне.

Основная проблема в том, что я знаю, как ее сделать, но делать не хочу: очень уж лениво так много программировать. Есть, конечно, хороший принцип «If you want something to be done — do it yourself», но…

Морзе

25.02.2003 09:34
Забавная история из жизни разработчиков ядра Linux. Человечек, который писал код для моргания светодиодами в случае kernel panic, оставил в коде коммент в духе /* а вот еще кому нечего делать, тот может реализовать моргание азбукой морзе */. Естественно, нашелся человечек, который это реализовал, другой человечек, который портанул под 2.5, куча человечков, которые это сурьезно обсуждают… а первоначальный автор теперь пытается объяснить, что это была ШУТКА и, ради бога, не надо это в ядро мержить.

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

Словарь ненормативной лексики программиста

11.02.2003 14:24
Вот тут.

One-letter aliases

04.02.2003 17:44
— One of the nicest things about unix is the two letter commands.
— I read somewhere that having lots of two letter commands makes things too cryptic.
— Yeah, that's why I have one-letter aliases.

Летмишоую

27.01.2003 17:24
Родственник мой, S., оказался в Америке в начале восьмидесятых, в возрасте «за сорок» и владея английским языком в рамках «средней школы давно». Помыкавшись некоторое время (не о том сказ), S. нашел отличную работу — программистом Больших Шкафов для телефонного гиганта AB&C (кто знает, тот поймет). Для общения с начальством новоиспеченный программист быстро выучил английскую фразу «летмишоую» (сейчас покажу), за которой следовала демонстрация работающего кода, и вопросов больше не возникало.

Работа в телефонных гигантах неторопливая, но S. бездельничать не любил, и решил заняться оптимизацией. В одном из Больших Шкафов обнаружилась база данных, а в ней — таблица с парами чисел: 1-3, 2-6, 3-9, … , 1000000-3000000. Hичтоже сумняшеся, S. таблицу стер, а обращения к ней заменил строчкой B=Ax3. Шкаф, радостно заурчав, продолжал функционировать. Отсутствие таблицы начальство заметило (и то по чистой случайности) через неделю. Состоялся знаменательный диалог:

— Где таблица?
— Таблица не нужна.
— Как это не нужна?
— Hу, не нужна. Летмишоую. Вот: B=Ax3
— Что это?
— Вместо таблицы.
— А где таблица?
— Я ее стер. Hе нужна.
— Как стер???
— Летмишоую. Вот, работает. B=Ax3
— Hу, работает. А где таблица-то?

В конце концов, проявив завидную корпоративную мудрость, начальник оставил S. в покое. А по AB&C долго ходили легенды о сумасшедшем бородатом русском, который ПРИДУМАЛ ФОРМУЛУ.

Update. Вот что пишут.

Это старая байка. На самом деле, большие шкафы не умели умножать. То есть умели, но программно и очень долго. Поэтому была таблица.

А «сумасшедший» русский придумал вот что:
A=(B сдвиг влево)+B, что эквивалентно умножению на 3

Со временем байка сохранилась, а смысл потерялся, т. к. владельцу «Пентиума», трудно себе представить, что большой шкаф не умел аппаратно умножать.

Программист

12.12.2002 20:15
Цытата:

«Как это не удивительно, но есть люди, которые называют меня так: „программист“ или так: „господин программист“. И это не смотря на то, что программированию я уделяю не больше времени, чем, скажем, сну, игре на гитаре или чтению книг. Никто меня не называет сновидцем, гитаристом или библиофилом. Должность, которая я занимаю, мало того, что не относится напрямую к программированию, её название даже не содержит букву „п“. Да, по образованию я математик — системный программист. Но у меня есть диплом по профессии „монтаж и наладка автоматизированных систем“. Да, я хорошо программирую, но я многое делаю хорошо — руки, спасибо папе, выпрямлены ещё в детстве, есть голова начинённая мозгом и генератор идей по любому поводу.

Похоже, что компьютер, несмотря на все усилия, до сих пор является для многих во многом мистической машиной, а программы кажутся исполненными сакральным смыслом».

Страницы:  2   1 

сайт по аренде квартир в Москве ; Оптовая продажа торговой мебели в Москве. ; технология несъёмной опалубки. Изодом опалубка фанера. Фсф хвойная