Tags: программирование

zauberer_and_S_H

Стандартная общественная лицензия коммунизма. Преамбула

Если бы Маркс был программистом, а Энгельс, допустим, системным администратором, то они помимо всего прочего просто обязаны были бы написать лицензию на коммунизм. :)

Но поскольку они ни в чем таком замечены не были, то эту задачу я беру на себя и на прогрессивную IT-общественность.

Целью этой лицензии кроме того является задача поделить коммунистов на лицензионных и нет. Естественно, к строительству коммунизма и к участию в социальной революции на стороне пролетариата будут допущены только коммунисты, получившие лицензию. Пока тока преамбулу написал. Со стороны IT-общественности принимаются добавления и возражения. :) А вообще продолжение следует.


Стандартная общественная лицензия коммунизма
Каждый вправе копировать и распространять экземпляры настоящей Лицензии без внесения изменений в ее текст.

Преамбула

Большинство лицензий на общественные формации лишаeт вас достойного уровня жизни и не позволяет полноценно участвовать в жизни общества, самому определять свое будущее. Стандартная Общественная Лицензия коммунизма, напротив, разработана с целью гарантировать вам право совместно использовать все блага общественной формации и вносить изменения в будущее общества, т.е. полноценно участвовать в его жизни, как это и подобает человеку. Условия настоящей Стандартной Общественной Лицензии применяются ко всем коммунистическим обществам во второй фазе, а также к обществу в первой фазе коммунизма по желанию его членов. (К некоторым обществам применяются условия Стандартной Общественной Лицензии переходного периода). Вы также можете применять Стандартную Общественную Лицензию к тому обществу, в котором живете, если для этого есть соответствующие условия в производительных силах и производственных отношениях.

Говоря о коммунизме, мы имеем в виду прежде всего свободу от эксплуатации труда капталом, ликвидацию частной собственности, а не различные вопросы надстройки (культуру, идеологию и пр.). Настоящая Стандартная Общественная Лицензия разработана с целью гарантировать вам право распространять коммунизм (и при желании членов общества получать за это славу), право получать все блага коммунизма при его достижении или иметь возможность их получить, право вносить изменения в общественное устройство или использовать достижения коммунизма и теорию марксизма при пропаганде в других обществах, а также право знать, что вы имеете все вышеперечисленные права.

Чтобы защитить ваши права, мы вводим ряд ограничений в теорию с тем, чтобы никто не имел возможности лишить вас этих прав или обратиться к вам с предложением отказаться от этих прав. Прежде всего, это утверждение о необходимости уничтожения частной собственности и следующей за ним ликвидации классов. Данные ограничения налагают на вас определенные обязанности в случае, если вы строите коммунизм в других обществах или агитируете за такое строительство.

Например, если вы с той или иной целью агитируете членов общества за социальную революцию и строительство коммунизма, вы обязаны достаточно хорошо знать марксизм и передать новым коммунистам все свои знания в том же объеме, в каком они есть у вас. Вы обязаны обеспечить освоение новыми коммунистами основ марксизма, дать им для изучении работы Маркса, Энгельса и Ленина. Вы также обязаны ознакомить их с условиями настоящей Лицензии.

Для защиты ваших прав мы: (1) оставляем за вами права членов коммунистического общества и (2) предлагаем вам использовать настоящую Лицензию, в соответствии с условиями которой вы вправе трудиться, отдыхать, участвовать в общественной жизни общества.

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

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

Ниже изложены условия создания, распространения и модификации коммунистической формации.
zauberer_and_S_H

Программирование - это как?

Сейчас расскажу, как. :) Точнее расскажу, как некоторые учат программированию. Изучаю тут OpenGL. Книжка онлайновая. Некого NeHe (кто сталкивался с OpenGL, возможно видели его уроки). И в принципе всё ничего, но только что попался кусок текста, от которого я чуть под стол не скатился. Вот он:

num переменная, хранит информацию о количестве звезд, которые мы рисуем на экране. Она определена как константа. Это значит, в коде программы мы не может поменять её значение. Причина, по которой мы определяем её как константу, в том, что мы не можем переопределить (увеличить/уменьшить) массив. Так или иначе, если мы задаём массив только на 50 звезд и хотим увеличить num до 51 звезды где-нибудь в программе, то массив не сможет увеличиться, и выдаст ошибку. Вы можете изменить num только в этой строчке программы. И не пытайтесь изменить значение num где-то в другом месте, если вы не хотите, чтобы случилось страшное :).

const num=50; // Количество рисуемых звезд

Сейчас мы создадим структуру (structure). Слово структура звучит глобально, но это не так на самом деле. Структура это совокупность простых данных (переменных, и т.д.) сгрупированых по какому-либо признаку в одну группу. Мы знаем, что мы будем хранить цепочку звезд. Вы увидите, что 7-ая строчка ниже это stars;. Мы знаем, что каждая звезда имеет 3 значения для цвета, и все эти значения целые числа: 3-я строчка: int r,g,b задаёт эти значения. Одно для красного (red) (r), одно для зелёного (green) (g), и одно для голубого (blue) (b). Мы знаем, что каждая звезда будет иметь разное расстояние от центра экрана, и расположена на одном из 360 углов от центра. Если вы посмотрите на 4-ую строчку ниже, вы увидите это. Мы создаём переменную типа число с плавающей точкой (floating point value) называется dist. Она означает расстояние. 5-ая строчка создаёт переменную того же типа с именем angle. Она будет отвечать за угол звезды.

И так мы имеем группу данных, которая содержит цвет, расстояние и угол звезды на экране. К сожалению, у нас больше чем одна звезда, и вместо того чтобы создавать 50 переменных для красного цвета, 50 переменных для зеленого цвета, 50 переменных для синего цвета, 50 переменных для расстояния, 50 переменных для угла мы просто создадим массив и назовем его star. Под каждым номером в массиве star содержится информация о нашей структуре stars. Это мы делаем в 8-ой строке ниже: stars star[num]. Тип элемента массива будет stars. stars это структура. И массив содержит всю информацию в структурах. Массив называется star. Количество элементов - [num]. И так как num=50, мы имеем массив с именем star. Наш массив содержит элементы типа структура stars. Намного проще, чем хранить каждую звезду в отдельных переменных. Что было бы большой глупостью и не позволило добавлять или уменьшать количество звезд с помощью переменной num.

(Прим. перев. - Такое ощущение, что объясняешь слону, как ходить :). Можно было одной строчкой это объяснить.)


Вопросы тут, конечно, все отпадают кроме одного. Что курил аффтар, чтобы ТАК написать последний абзац???

UPD:
Комрад rexy_craxy усомнился в умственных способностях переводчика, поэтому ниже даю исходный текст на американском языке:

num will keep track of how many stars we draw to the screen. It's defined as a CONSTant. This means it can never change within the code. The reason we define it as a constant is because you can not redefine an array. So if we've set up an array of only 50 stars and we decided to increase num to 51 somewhere in the code, the array can not grow to 51, so an error would occur. You can change this value to whatever you want it to be in this line only. Don't try to change the value of num later on in the code unless you want disaster to occur.

const num=50; // Number Of Stars To Draw

Now we create a structure. The word structure sounds intimidating, but it's not really. A structure is a group simple data (variables, etc) representing a larger similar group. In english :) We know that we're keeping track of stars. You'll see that the 7th line below is stars;. We know each star will have 3 values for color, and all these values will be integer values. The 3rd line int r,g,b sets up 3 integer values. One for red (r), one for green (g), and one for blue (b). We know each star will be a different distance from the center of the screen, and can be place at one of 360 different angles from the center. If you look at the 4th line below, we make a floating point value called dist. This will keep track of the distance. The 5th line creates a floating point value called angle. This will keep track of the stars angle.

So now we have this group of data that describes the color, distance and angle of a star on the screen. Unfortunately we have more than one star to keep track of. Instead of creating 50 red values, 50 green values, 50 blue values, 50 distance values and 50 angle values, we just create an array called star. Each number in the star array will hold all of the information in our structure called stars. We make the star array in the 8th line below. If we break down the 8th line: stars star[num]. This is what we come up with. The type of array is going to be stars. stars is a structure. So the array is going to hold all of the information in the structure. The name of the array is star. The number of arrays is [num]. So because num=50, we now have an array called star. Our array stores the elements of the structure stars. Alot easier than keeping track of each star with seperate variables. Which would be a very stupid thing to do, and would not allow us to add remove stars by changing the const value of num.

Кстати, сам урок находится здесь: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=09


Насколько я что понимаю в английском, что с переводом, что без него - одна редька получается.
zauberer_and_S_H

А что у вас? v. 2 (исправленная)

Итак! Только сегодня, а также во все последующие дни до самого момента уничтожения серверов Живого Журнала вниманию комрадов и прочих граждан предлагается новая исправленная версия стихотворения знаменитейшего поэта С. Михалкова "А что у вас?"! Спешите видеть первыми!

Только в этом стихотворении Вы найдете образ детей, которым в будущем суждено стать программистами, осознающими свои классовые интересы, которые готовы трудиться по-коммустически и которые разделяют идеи интернационализма и братства программистов (очевидно, и других рабочих) всех стран.

Объектно-ориентированные программисты всех стран, инкапсулируйтесь!



Все. Реклама кончилась. :) Ниже идет само стихотворение.



А что у вас? v. 2
Для младшего школьного программистского возраста

Кто в «Кроватке» уж сидел,
Кто на форумы глядел,
Толя ел,
Борис писал,
Николай в «контру» играл.

В клубе этим вечером,
Делать было нечего.

Сеть упала, вот уж горе,
Админ забрался на чердак.
Тут сказал ребятам Боря
Просто так:
- А у меня есть дома Windows!
А у вас?
- А наш кумир – товарищ Линус!
А у вас?
- А у нас админ сегодня
Притащил вчера сервак.
Его настраивал он полдня,
Но вот инет потом иссяк!

Collapse )

zauberer_and_S_H

Программистская запись

И все-таки я все больше прихожу к мысли, что, например, если исходный код занимает примерно уже 10 MB, то структурный подход к программированию должен отправляться в топку. Однако же это, к сожалению, происходит не всегда...
zauberer_and_S_H

О программистской литературе

Тут неожидано выяснилось, что почти срочно необходимо изучить DirectX. Решил найти какую-нибудь электронную книжку (ибо бумажные все же дороговаты), чтобы почитать и понять хотя бы основы, ну а дальше доврубаться можно на практике вместе с мануалом и другой хорошей литературой.

Ну дело вроде не хитрое, нашел в локальной сети книгу Горнакова С. "DirectX 9. Уроки программирования на C++". Вроде и пишет по делу, некоторые штуки можно пропускать, т. к. в свое время повозился с COM и DirectDraw, но читать это творение местами просто противно. Н увот смотрите:

"Если вы еще не создали новый проект, то самое время это сделать. Откройте Visal C++ .NET, создайте пустой проект Urok4 и добавьте в нео пустой файл, назвав его Treugolnik.cpp. Скопируйте с предыдущего урока 3 весь код, приведенный на компакт-диске в папке Code\Urok3, и вставьте его в только что созданный файл."

Не корежит?! У меня такое ощущение, что аффтар держит читателя за дебила, неспособного как минимум понять значения слов Lesson и Triangle. Ну не знаю... Быть может, только мне в университете внушили отвращение к транслитерированным идентификаторам и именам файлов, но все-таки я думаю, что это настоящее убожество.

zauberer_and_S_H

НЕновогоднее

Дабы не плодить кучу боянов по поводу празнования Нового года и соответствующих поздравлений в лентах моих комрадов, лучше я за час до нового года напишу что-нибудь полезное. А именно, сейчас я закачал наконец полную версию своей ВКР на тему стегоанализа изображений, которую раньше выкладывал сюда кусками.

Так-как мне надоело всё это переделывать в HTML, то полную версию в формате PDF можно совершенно свободно найти тут: http://ifolder.ru/4795525. Так как со временем ссылка видимо убьется, то всем нуждающимся рекомендуется писать сюда комменты.

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

После каникул выложу что-нибудь посвежее на эту тему.

ЗЫ. Ах, да. Тут еще в голове вертится несколько строк нового стихотворения про трамвай. Надо бы осилить и написать. :)

ЗЗЫ. Чёрт, и ещё я сегодня всё-таки купил себе новые зимние ботинки взамен порвавшихся. Жутко доволен, а то до сих пор ходил в летних кроссовках. Радует, что зимы стали теплее.

ЗЗЫ. Второй чёрт, кроме темы диалектики необходимо почти срочно разрабатывать тему научного атеизм и классовой структуры общества. Поводов для этого набралось дофига. Надеюсь, что хоть что-то из этого появится в ЖЖ после 9 января.

ЗЗЗЫ. А всё же Новый год настанет уже чуть меньше, чем через час...
zauberer_and_S_H

Brainfuck

ЖЖ-юзер mbr написал игру "Крестики-нолики" на самом чудесном языке программирования Brainfuck. Несмотря на эпатажное название, язык этот просто очарователен почти так же, как и машина Тьюринга. Текст программы находится здесь и под катом.

Людям слабонервным или непонимающим всей радости, охватывающей программиста от работы на машине Тьюринга, лучше не смотреть. :)



Collapse )


Дома попробую скомпилировать и расскажу, что получилось.
zauberer_and_S_H

Вот, новый поворот, и мотор ревет, что он нам несет...

Все-таки увольняюсь. Теперь буду работать тру-программистом, т. е. чего-то писать на C++, C#, Java и прочих чудесных изобретениях человеческого разума. А то все эти установки осветления да обессоливания ужасно надоели. Да и всякие информационные и алгоритмические обеспечения писать заколебало.

В принципе всё здорово. Хоть языки не буду забывать, а то за последние 1.5 года почти никакой практики программирования (на человеческих языках) не было.

ЗЫ. А в субботу мне принимать лабораторные работы по программированию на Паскале у первокурсников-вечерников, заваливших в пролом учебном году экзамен и оставленных на осень. Но вроде не совсем раздолбаи. :) Если ничего не отчебучат, то должны пройти на следующий уровень.

zauberer_and_S_H

День программиста

Вот тут комрад atly пишет, что сегодня оказывается день программиста, и поздравляет себя, меня и других:
"Поздравляю всех программистов с профессиональным праздником!
Желаю всего хорошего: чтобы постановка задачи была вменяемая, сроки реалистичные, работа интересная, начальство незлобливое, а рост зарплаты - экспоненциальный, опережающий инфляцию.

ИНФА: Как известно, День Программиста отмечается каждый 255-ый (или 256-ой по-бейсиковскому стилю) день года, т.е. 14 сентября в високосном году и 13 сентября в невисокосные. Сопровождается пьяными хулиганскими выходками, актами насилия и вандализма в тёмных подземельях 3D-стрелялок..."



Вот всем этим и надо сегодня заняться. :)

ЗЫ. Однако в википедии пишут, что в високосном году день программиста отмечается 12 сентября. Но в настоящий момент это не имеет значения.