Четверг, 05 Декабря 2024, 05:06

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
GudleifrДата: Понедельник, 03 Августа 2015, 14:35 | Сообщение # 1101 | Тема: Что выбрать для редактора уровней [2д]?
почти ветеран
Сейчас нет на сайте
Цитата --antonyvolkoff-- ()
Открываем MSDN, смотрим, что же такое HWND и с чем его едят, где живет и т.д. и т.п.
Года, так, три смотришь...


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Понедельник, 03 Августа 2015, 10:29 | Сообщение # 1102 | Тема: Выбор ЯП и движка
почти ветеран
Сейчас нет на сайте
А зря.
Если отбрасывать все, кроме рекламы, обещающих профиты "умножадным" и "достойным", быстро превратишься в раба.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Понедельник, 03 Августа 2015, 10:18 | Сообщение # 1103 | Тема: Выбор ЯП и движка
почти ветеран
Сейчас нет на сайте
Цитата Xakep ()
Правильное пользование умными указателями сложнее чем обычными, и дает хороший профит,
Одно противоречит другому. Единственная проблема программирования (выразившаяся в том, что с тех пор не написано ничего полезного), как раз и состоит в сложности. Другие "профиты" - лишь иллюзия.
Цитата Xakep ()
только не из стандартной библиотеки, а собственная реализация.
И так всегда. Если что-то надо, проще сделать самому. И зачем тогда "стандарт"?


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Понедельник, 03 Августа 2015, 10:23
GudleifrДата: Понедельник, 03 Августа 2015, 09:33 | Сообщение # 1104 | Тема: Выбор ЯП и движка
почти ветеран
Сейчас нет на сайте
Цитата Xakep ()
много полезного, умные указатели к примеру.
Поправка. Много хорошо пропиаренного. Полезность определяется результатами. Что, с внедрением умных указателей резко выросло количество хороших игр? Наоборот. Большинство "умных концепций" рассчитано на "тупого потребителя", т.е. заведомо ухудшает качество работника и его работы.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Понедельник, 03 Августа 2015, 08:33 | Сообщение # 1105 | Тема: Выбор ЯП и движка
почти ветеран
Сейчас нет на сайте
Xakep, плохо само "17". В 60-80-е годы прошлого века выходили сборнички алгоритмов на Алголе-60. И пусть сам язык ни разу не был полностью реализован ни на одной машине, программисты свободно обменивались своими идеями и наработками. А, если я даже в рамках одного языка должен постоянно пересматривать свой подход, то о какой работе может идти речь? Только о коллекционировании новых (ненужных!) фич. Просто, пока я не скачаю новый "стандарт" и не изучу никому не нужные инновации, я не буду "конкурентоспособным", а "окно" - остающееся до введения нового "стандарта" уже закрывается...

Как тут не вспомнить баян:
.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Понедельник, 03 Августа 2015, 08:35
GudleifrДата: Понедельник, 03 Августа 2015, 08:11 | Сообщение # 1106 | Тема: Выбор ЯП и движка
почти ветеран
Сейчас нет на сайте
Цитата Saitei ()
Всё это банальные истины, которые не нуждаются в разжёвывании.
Нуждается, пока кто-то верит в
Цитата Saitei ()
В С++ остальное, например, заложено в самом стандарте (работа с файлами, потоки и т.п.).

Попытка заложить в стандарт языка ОС-зависимые штуки либо приводит к появлению проблемно-ориентировааного языка (BASIC-подобного), либо является просто нечестным маркетинговым ходом: "Вы купили C++? Нет, Вы не купили C++, пока не купили и STL!".


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Воскресенье, 02 Августа 2015, 22:44 | Сообщение # 1107 | Тема: Выбор ЯП и движка
почти ветеран
Сейчас нет на сайте
Цитата Saitei ()
Речь только о том, что есть кроссовая реализация.
Это еще одна сказка для чайников. Не бывает переносимых программ. Бывают только совершенно по-разному реализованные ОС, которые внешне ведут себя похоже. Т.е. C-программа не сама понимает, что есть такая штука "файл", а спрашивает у ОС - понимает ли та, что это такое? И не факт, что ответ будет утвердительным. Например, о большинстве полезных свойств 'nix-файлов (о тех же мандатных и дискреционных политиках) DOS не имеет никакого понятия.

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


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Воскресенье, 02 Августа 2015, 14:30 | Сообщение # 1108 | Тема: [Perl] Машина Тьюринга
почти ветеран
Сейчас нет на сайте
AlexRabbit, спасибо, надо посмотреть

Добавлено (02 августа 2015, 14:30)
---------------------------------------------
... посмотрел.
По первой ссылке - "обычная демонстрационная машина", основная часть кода которой предназначена для красивого ввода-вывода ленты/таблицы. Сама машина реализована по "остаточному принципу".
По второй - забавная машина представляющая один такт работы как операцию макроподстановки в строку-ленту. Красиво, но не практично.

Т.е. по обоим ссылкам представлена "машина как проблема", а меня больше интересует "машина как решение".


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Воскресенье, 02 Августа 2015, 13:26 | Сообщение # 1109 | Тема: Вопрос-Ответ (С)
почти ветеран
Сейчас нет на сайте
Цитата YellowAfterlife ()
"a -= b" это синтаксический сахар для "a = a - b"
Ни в коем случае. Это не "сахар", а реализация первичных ф-ий языка C - как можно ближе к процессору, и как можно мощнее выражения. Например, приведенная "фраза", это не "оператор подобный :=", а выражение, которое имеет значение и может быть присвоено кому-то еще.
Да, "a <оп>= b" то же самое, что и "a = a <op> b" на уровне обычного кодинга, но "начинка" совершенно другая (а в C++ ее можно сделать имеющей совершенно иной смысл).
Называть "a -=b" сахаром для "a = a - b", это все равно, что называть "a - b" сахаром для "a + -b".


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Воскресенье, 02 Августа 2015, 13:29
GudleifrДата: Воскресенье, 02 Августа 2015, 09:38 | Сообщение # 1110 | Тема: [Perl] Машина Тьюринга
почти ветеран
Сейчас нет на сайте
Цитата Tymonr ()
Их же полно в интернете
Это только так кажется. На самом деле число тех, кто знает, что такое Машина Тьюринга, как и число умеющих красиво писать на Perl, крайне невелико.

Добавлено (30 мая 2015, 10:30)
---------------------------------------------
Цитата Gudleifr ()
число умеющих красиво писать на Perl
Я в это число явно не вхожу. У меня получается какая-то хрень, в которой надо нудно отслеживать скобки и обратные косые:
Код
#!/usr/bin/perl

# МАШИНА: СОСТОЯНИЕ => [[СИМВОЛ, СОСТОЯНИЕ, СДВИГ], ...]

%stats = (Garbage => [["^\\\\", "Path", 0], [0, 0, 1]],
    Path => [["^\$", "Param", 1], ["^. ", "Param", 0],
     ["^\\\\", 0, 1], ["^ТЕКСТ", "Text", 1],
     ["^ТАБЛИЦА", "Header", 1], ["^ЗАПИСИ", "Header", 1],
     [0, "Garbage", 0]],
    Header => [["^\$", "Text", 1], [0, 0, 1]],
    Text => [["^\$", "Param", 1], [0, 0, 1]],
    Param => [["^. ", 0, 1], ["^\\\\", "Path", 0],
     ["^\$", "Garbage", 1], [0, "Garbage", 0]]);

# СЧИТЫВАНИЕ СИМВОЛА, ЕСЛИ ОН ЕЩЕ НЕ БЫЛ СЧИТАН

sub ready {
    $reading = <FI> unless $reading;
    return 0 unless $reading;
    $reading =~ s/\s*\r?\n//;
    return 1
}

# ОДИН ТАКТ РАБОТЫ

sub step {
    my $l = $stats{$state};    # СОСТОЯНИЕ
    foreach (@$l) {
     my $s = $_->[0]; # СИМВОЛ
     if (!$s or $reading =~ /$s/) {
      $p->{$state . $s}() if exists $p->{$state . $s}; # ВЫВОД
      $state = $_->[1] if $_->[1]; # НОВОЕ СОСТОЯНИЕ
      $reading = 0 if $_->[2]; # СДВИГ
      return
     }
    }
}

# ФУНКЦИИ ВЫВОДА: СОСТОЯНИЕ.СИМВОЛ

$p1 = {"Garbage^\\\\", sub {
     print "Garbage-Path:", $reading, "\n"
    },
    "Param^\\\\", sub {
     print "Param-Path:", $reading, "\n"
    },
    "Garbage0", sub {
     print "Garbage:", $reading, "\n"
    }};

# СЧИТЫВАЕМ ЛЕНТУ (ФАЙЛ)

$s = shift @ARGV;
$s .= ".txt";
$p = $p1;
open FI, $s;
$reading = 0;
$state = "Garbage";
step() while ready();
close FI


Добавлено (28 июля 2015, 11:23)
---------------------------------------------
Довесок:

Зачем вообще нужна МТ?

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

Описание МТ, кроме некоторых соглашений "о массивах" состоит из "таблицы":

(стар.состояние, стар.символ) => (нов.состояние, нов.символ, перемещение).

Варианты:

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

1. (стар.состояние, [стар.символ]) => (нов.состояние, [нов.символ], перемещение) - машина с несколькими дорожками на ленте.
2. (стар.состояние, [стар.символ]) => (нов.состояние, [нов.символ], [перемещение]) - машина с несколькими лентами.
3. (стар.состояние, стар.символ) => (нов.состояние, нов.символ, [перемещение]) - машина с многомерной лентой.
4. (стар.состояние, стар.символ) => ([нов.состояние], нов.символ, перемещение) - недетерминированная машина.
...

Во-вторых, на множества из которых берутся "величины" можно ограничивать по-разному:

1. возможна машина только с двумя "символами"
2. возможна машина только с двумя "состояниями"
3. "перемещение" может включать или не включать действие "остаться на месте"
...

И т.д., и т.п...

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

Что тут можно программировать (см. выше)?

1. "Банальная эрудиция". Написать реализацию "наборов" и "таблицы". На их основе писать автоматические преобразователи из одного вида в другой. Автоматически строить машину нужного типа по "заданию" (обычно, "допускаемому языку").

2. "Символы". Задача разбора (всяких там регулярных выражений и прочих грамматик) встречается достаточно часто. Но МТ для их распознавания обычно оказывается слишком мощной. Почти всегда хватает конечных автоматов (иногда с наворотами), которые не "отматывают ленту назад".

3. "Блуждание". Рассматриваем ленту как "поток событий" или "карту местности". Тогда наша МТ представляет собой либо "автомат игры", либо "модель игрока". И мы можем попытаться вынести суждения о правильности/неправильности модели, ее избыточности и непротиворечивости. Конечно, в очень узких пределах, т.к. одна МТ (в конечном итоге, мы сами) не может предсказать поведение другой (программы).

Добавлено (02 августа 2015, 09:38)
---------------------------------------------
Довесок #2:
В методических целях (и чтобы поржать) переписал автомат на древнем BASIC.
Осмысленные имена заменены комментариями.
Для хоть какой-то наглядности программа разбита на два блока: 1000-1440 - состояний (соответствует %stats) и 2000-3690 - вывода (соответствыет sub step).
Вместо ассоциативного массива код надо вставлять в соответствующие строки блока вывода - в промежутки XX00-XX90.
Понятно, BASIC-программа немного более чувствительна к размеру строк и наличию в них мусора, но это поправимо (я просто не стал усложнять код).
Код

    1000 REM GARBAGE
    1010 IF LEFT$(S$,1)="\" THEN 2000
    1020 GOTO 2100
    1100 REM PATH
    1110 IF LEN(S$)=0 THEN 2200
    1120 IF MID$(S$,2,1)=" " THEN 2300
    1130 IF LEFT$(S$,1)="\" THEN 2400
    1140 IF LEFT$(S$,5)="ТЕКСТ" THEN 2500
    1150 IF LEFT$(S$,7)="ТАБЛИЦА" THEN 2600
    1160 IF LEFT$(S$,6)="ЗАПИСИ" THEN 2700
    1170 GOTO 2800
    1200 REM HEADER
    1210 IF LEN(S$)=0 THEN 2900
    1220 GOTO 3000
    1300 REM TEXT
    1310 IF LEN(S$)=0 THEN 3100
    1320 GOTO 3200
    1400 REM PARAM
    1410 IF LEN(S$)=0 THEN 3500
    1420 IF LEFT$(S$,1)="\" THEN 3400
    1430 IF MID$(S$,2,1)=" " THEN 3300
    1440 GOTO 3600
    2000 REM GARBAGE - ОБРАТНАЯ КОСАЯ - PATH
    2090 GOTO 1100
    2100 REM GARBAGE - ПРОЧЕЕ - GARBAGE
    2190 LINE INPUT#1, S$: GOTO 1000
    2200 REM PATH - ПУСТО - PARAM
    2290 LINE INPUT#1, S$: GOTO 1400
    2300 REM PATH - БУКВА+ПРОБЕЛ - PARAM
    2390 GOTO 1400
    2400 REM PATH - ОБР.КОСАЯ - PATH
    2490 LINE INPUT#1, S$: GOTO 1100
    2500 REM PATH - "ТЕКСТ" - TEXT
    2590 LINE INPUT#1, S$: GOTO 1300
    2600 REM PATH - "ТАБЛИЦА" - HEADER
    2690 LINE INPUT#1, S$: GOTO 1200
    2700 REM PATH - "ЗАПИСИ" - HEADER
    2790 LINE INPUT#1, S$: GOTO 1200
    2800 REM PATH - ПРОЧЕЕ - GARBAGE
    2890 GOTO 1000
    2900 REM HEADER - ПУСТО - TEXT
    2990 LINE INPUT#1, S$: GOTO 1300
    3000 REM HEADER - ПРОЧЕЕ - HEADER
    3090 LINE INPUT#1, S$: GOTO 1200
    3100 REM TEXT - ПУСТО - PARAM
    3190 LINE INPUT#1, S$: GOTO 1400
    3200 REM TEXT - ПРОЧЕЕ - TEXT
    3290 LINE INPUT#1, S$: GOTO 1300
    3300 REM PARAM - БУКВА+ПРОБЕЛ - PARAM
    3390 LINE INPUT#1, S$: GOTO 1400
    3400 REM PARAM - ОБР.КОСАЯ - PATH
    3490 GOTO 1100
    3500 REM PARAM - ПУСТО - GARBAGE
    3590 LINE INPUT#1, S$: GOTO 1000
    3600 REM PARAM - ПРОЧЕЕ - GARBAGE
    3690 GOTO 1000

Сравнивая Perl- и BASIC-машины, мы должны сделать два вывода:
* (Старые) языки программирования изначально создавались (умными людьми) как практическое воплощение всех этих "теоретических основ вычислений".
И добавлять в них "еще немножко полезных абстракций и возможностей структурирования" - дело достаточно пустое, он и и так "все могут".
* Препроцессор (умный редактор), который хоть как-то помог бы не запутаться в этих "номерах строк/состояний", вещь жутко необходимая.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Воскресенье, 02 Августа 2015, 09:39
GudleifrДата: Воскресенье, 02 Августа 2015, 07:57 | Сообщение # 1111 | Тема: Выбор ЯП и движка
почти ветеран
Сейчас нет на сайте
Оффтоп.
Цитата Saitei ()
В С++ остальное, например, заложено в самом стандарте (работа с файлами, потоки и т.п.).
Обычная ошибка: работа с файлами (как и остальные библиотеки, даже STL) - это часть ОС (в случае с C/C++ - Unix). Считать их частью языка - себе дороже. Лучше сразу запомнить, что даже компилятор самого языка - есть часть ОС (и практически нет языков реализованных "в чистом виде"). Например, работая с Win-API (см. Рихтера) проще проецировать файлы в память, а в 'nix-ах - файл это средство синхронизации и обмена информацией между процессами, а совсем не "место на диске".
Библиотеки, IDE и прочие "свойства машины" конечно влияют на постановку задачи и ее сложность, но не имеют практически никакого отношения к записи вашего решения задачи на языке программирования.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Воскресенье, 02 Августа 2015, 07:44 | Сообщение # 1112 | Тема: Почему не делают вид снизу?
почти ветеран
Сейчас нет на сайте
А, ведь, такая игра была! Точнее, игровой автомат ("Щит Родины"?). По наклонному небу над игроком летели силуэты вражьих самолетов, а у игрока была зенитная ракета (световая проекция), установленная на пластмассовом танчике с отломанной башней).

Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Суббота, 01 Августа 2015, 23:05 | Сообщение # 1113 | Тема: Выбор ЯП и движка
почти ветеран
Сейчас нет на сайте
Цитата HeavyMetal ()
в моих целях программирование графики.
По сравнению с "фамилией, званием и личным номером" это, конечно прогресс, но не хотелось бы втыкать Вам под ногти булавки, чтобы выяснить, что за "графику" Вы имеете в виду.
Всегда помните о трех практически независимых этапах программирования:
1. Нужно решить задачу. Как Вы ее формулируете? В каких терминах? Можете ли, вообще, ее решить или считаете, что достаточно продвинутый язык решит ее за Вас?
2. Нужно записать решение на языке программирования. Опять же как Вы себе это видите? Есть ли опыт? Сколько дней у Вас уходит на изучение нового языка? Насколько богата Ваша библиотека алгоритмов?
3. Нужно приспособиться к конкретной ОС. Сколько ОС, IDE, библиотек Вы видели? По каким критериям их сравнивали? Видели ли то, что удовлетворяло Ваши художественные запросы?


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Суббота, 01 Августа 2015, 23:42
GudleifrДата: Суббота, 01 Августа 2015, 22:16 | Сообщение # 1114 | Тема: Выбор ЯП и движка
почти ветеран
Сейчас нет на сайте
Цитата HeavyMetal ()
стоит ли переходить?
Давайте исходить из того, что изобретатели этих языков и обезьянников не совсем идиоты. Значит, то, что они придумали для чего-то нужно и полезно. А вот, подходит ли оно для Ваших целей, без миелофона не скажу.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Суббота, 01 Августа 2015, 14:14 | Сообщение # 1115 | Тема: Какой вариант GUI диалогов лучше
почти ветеран
Сейчас нет на сайте
Цитата FunApple ()
почему же это сразу означает что диалоги и не нужны совсем?
Потому, что мы, по идее, должны иметь дело с произведением искусства, рожденным авторским гением. А, если этот "Рафаэль" спрашивает нас делать "подлиннее или покороче", то нафига нам такое счастье? Допустим в результате победит мнение №3. Это будет означать что все, кто проголосовал против, будут от игры плеваться? Вряд ли. Сожрут. А раз "сожрут", то какой смысл спрашивать?
Мы углубляемся в болото метафизики. Какого размера делать антенну? Определяется длиной волны! А мы не знаем физики! Так какого хрена вы взялись ее делать? Кому нужна еще одна игра "ни о чем" с диалогами "как у всех"?


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Суббота, 01 Августа 2015, 09:35 | Сообщение # 1116 | Тема: Какой вариант GUI диалогов лучше
почти ветеран
Сейчас нет на сайте
Цитата beril ()
какой вариант отображение диалогов выбрать.
При таком подходе ответ очевиден. Никакой! Раз, Вы не можете представить, как органично вписать диалоги в игру, значит они Вам не нужны.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Пятница, 31 Июля 2015, 23:21 | Сообщение # 1117 | Тема: Какой вариант GUI диалогов лучше
почти ветеран
Сейчас нет на сайте
Цитата beril ()
Интересует только визуальный вид и расположение элементов интерфейса
А "просто визуального вида" не бывает. Он диктуется, во-первых, требованиями интерфейса (шириной канала игрок-программа) и, во-вторых, стилем самой игры.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Пятница, 31 Июля 2015, 23:22
GudleifrДата: Пятница, 31 Июля 2015, 22:36 | Сообщение # 1118 | Тема: Какой вариант GUI диалогов лучше
почти ветеран
Сейчас нет на сайте
Бессмысленно спрашивать, какой диалог лучше, пока Вы сами не сформулировали, чем они друг от друга отличаются. Например выше, есть примеры и "комнатных", и "оконных", и "фреймовых" интерфейсов, у каждого из которых есть свои плюсы и минусы и "за пределами диалогов".

Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Пятница, 31 Июля 2015, 13:41 | Сообщение # 1119 | Тема: Как запаковать\скрыть ресурсы ?
почти ветеран
Сейчас нет на сайте
Alkosha, не переживайте, у меня, бывало, тексты тырили даже забывая вырезать личные комментарии. Но, к сожалению, бороться с ворами воровскими методами (в т.ч. авторскими правами) нельзя. Единственный выход - делать что-то столь умное/красивое, что будет связываться с Вами однозначно. А остального - не жалко.

Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
GudleifrДата: Среда, 29 Июля 2015, 13:41 | Сообщение # 1120 | Тема: Подскажите книги по c++
почти ветеран
Сейчас нет на сайте
Alfe, не надо с детства привыкать к соблюдению прав на интеллектуальную собственность. Не окупается. Ни материально, ни морально. (Если нет в Сети, найдите по соседству с домом букинистический магазин).

Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг