Фундаментальные основы программирования. Что нужно знать?
От: Darooma Россия  
Дата: 27.05.12 19:57
Оценка:
Что из фундаментальных основ в программировании, таких как знание алгоритмов, вы можете назвать? Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.

1. Алгоритмы
а) Сортировки
б) Выборки
....
2....
Re: Теорминимум
От: Qbit86 Кипр
Дата: 27.05.12 20:11
Оценка: 10 (3) +1 -2
Здравствуйте, Darooma, Вы писали:

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


http://sharpc.livejournal.com/67583.html
Глаза у меня добрые, но рубашка — смирительная!
Re[2]: Теорминимум
От: Wolverrum Ниоткуда  
Дата: 27.05.12 20:29
Оценка: 1 (1) +2 :)
Здравствуйте, Qbit86, Вы писали:

Q>http://sharpc.livejournal.com/67583.html

Хорошая ссылочка.


Р)аботодатель
П)рограммер-соискатель

Р — В своем резюме вы написали, что знаете следующие языки и технологии программирования: Basic (TB, QB, VB, VBA, VB.NET) C (C and C++ for Unix, FreeBSD, QNX), C++, VC++, C++.NET, C#, в идеале знаете ассемблеры следующих процессоров I-4004 — IP4, Amiga... (ну и тут список на 2 страницы, мелко и подробно)
Р — Ну что же, зарплата у нас по договоренности, но гор золота мы вам не сулили. Максимум на что вы можете расчитывать это 150 тыс Евро.
П -!?!?!?
Р — И только не надо весь рабочий день мечтать о коттедже на Канарах, максимум, что мы можем прежложить нашим сотрудникам — это 6-комнатную в центре Москвы.
П — пытается усидеть на месте, и вести себя пристойно
Р — и не надо думать, что если у шефа красный Ferrari, то вы его тоже получите. Ваш максимум — это BMW M6
П — (не выдержав) Пиздите!
Р — (Чинно) Ты первый начал


Теорминимум в идеале должен быть равен ответам на вопросы 60-80% интервью (+задача про гномов + обращение списка + виртуальный деструктор ). А потом уже этот минимум подтягивается в зависимости от проекта.
Re: Фундаментальные основы программирования. Что нужно знать?
От: elmal  
Дата: 28.05.12 06:19
Оценка: 33 (2) +5
Здравствуйте, Darooma, Вы писали:

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

1) Умение декомпозировать;
2) Умение абстрагироваться;
3) Умение находить ошибки в коде;
4) Умение рефакторить
5) Иметь представления о различных парадигамах программирования и умение их использовать.
Пока хватит.
Re: Фундаментальные основы программирования. Что нужно знать?
От: a_g_99 США http://www.hooli.xyz/
Дата: 28.05.12 06:23
Оценка: 3 (1) -1
Здравствуйте, Darooma, Вы писали:

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


D>1. Алгоритмы

D> а) Сортировки
D> б) Выборки
D> ....
D>2....

1) Основы асимптотического анализа. среднее [O(N)], худшее/лучшее роста по времени, по выделяемой памяти
2) Алгоритмы сортировок. База: Selection sort, Bubble sort, Insertion sort. Асимптотика. Advanced: Merge sort,Binary search, Timsort, Quick/Quick3, Heap sort. Асимптотика.
3) Деревья. База: Общие понятия для чего, какие типы деревьев бывают. Смысл балансировки. Асимптотика.
Advanced: AVL — определение и реализация, B+ tree — определение и реализация, RB tree — определение и реализация.
4) Алгоритмы на графах (тут кто-то другой подскажет я не силен)
5) Основы теории вероятности. Основные открытые задачи — парадокс монти-холла/ задача о двух конвертах и т.д.
6) Язык запросов (типа SQL). Основы синтаксиса, джойны, группировки. Индексы, оптимизация.
7) Основы реляционной модели для структуры данных. 3 нормальные формы.
8) Паттерны. GoF, SOLID. Определение рефакторинга, хороший/плохой код. Синхронные/асинхронные модели. Коллбэки.
9) Threading. Примитивы, основы синхронизации. Асинхронные паттерны кода. Потоки/процессы/сигналы/примитивы в ОС.
10) Системы исчисления (сам не знаю ). Логические сдвиги, операции с ними. Операции с двоичными числами, 16-чными числами.

А ведь есть еще требования к специализированным языкам и фрэймворкам. Вот такие дела
Re[2]: Фундаментальные основы программирования. Что нужно знать?
От: Darooma Россия  
Дата: 28.05.12 06:32
Оценка: -1
Здравствуйте, elmal, Вы писали:

E>Здравствуйте, Darooma, Вы писали:


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

E>1) Умение декомпозировать;
E>2) Умение абстрагироваться;
E>3) Умение находить ошибки в коде;
E>4) Умение рефакторить
E>5) Иметь представления о различных парадигамах программирования и умение их использовать.
E>Пока хватит.

не то, слишком специфично.
Re[3]: Фундаментальные основы программирования. Что нужно знать?
От: elmal  
Дата: 28.05.12 06:55
Оценка: 2 (2) +7
Здравствуйте, Darooma, Вы писали:

D>не то, слишком специфично.

Что значит слишком специфично. Это именно Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы.. Лично мне эти основы нужны всегда, каждый день, что отсюда выкинуть, я не знаю. А вот алгоритмы, сортировки — вот именно это как раз слишком специфично, это требуется от силы одному проценту, и то далеко не каждый день.
Re: Фундаментальные основы программирования. Что нужно знать?
От: Sharov Россия  
Дата: 28.05.12 07:44
Оценка: 3 (1) -1
Здравствуйте, Darooma, Вы писали:

Основы операционных системы (см. Таненбаума).
Основы реляционных баз данных (см. Дейта).
Понимание основных парадигм программирования -- ООП, ФП. По ООП советую Бертарана Мейера.
Паттерны (см. GOF).
Сети (см. Таненбаума).
Кодом людям нужно помогать!
Re: Фундаментальные основы программирования. Что нужно знать?
От: LaptevVV Россия  
Дата: 28.05.12 08:17
Оценка: +1 :)
Здравствуйте, Darooma, Вы писали:

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

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

присваивание;
последовательное выполнение;
циклы;
рекурсию;
косвенную адресацию (указатели);
мультипрограммирование (многопоточность);
«чувство правильной вещи».

Источник: Ген программизма...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Фундаментальные основы программирования. Что нужно знать?
От: _Obelisk_ Россия http://www.ibm.com
Дата: 30.05.12 19:34
Оценка: 8 (2) +1 -2
Здравствуйте, elmal, Вы писали:

Это не фундаментальные основы. Это практические навыки, которые нарабатываются на практике. Фундамент — дискретная математика, алгоритмы, формальные языки, мат. логика и т.д. То, что большинство ничего такого не используют в работе ни о чем не говорит. Большинство людей обходится 4-мя арифметическими действиями над натуральными числами. Но это не означает ведь, что образование должно давать лишь этот объем.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[3]: Фундаментальные основы программирования. Что нужно знать?
От: elmal  
Дата: 31.05.12 05:21
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>Это не фундаментальные основы. Это практические навыки, которые нарабатываются на практике. Фундамент — дискретная математика, алгоритмы, формальные языки, мат. логика и т.д. То, что большинство ничего такого не используют в работе ни о чем не говорит. Большинство людей обходится 4-мя арифметическими действиями над натуральными числами. Но это не означает ведь, что образование должно давать лишь этот объем.

Для начала, было бы неплохо, чтоб образование давало хотя бы тот объем, который я описал. А то ведь не дает ни черта, в результате дохрена людей, считающих себя программистами, такое городят, что хоть волком вой. А если и пытается дать, то плохо, и на последних курсах, когда народ уже вообще на лекции не ходит. А надо бы на первых, и считать это все базисом. Во вторых — дискретку, алгоритмы и т.д — да, это давать надо. Но не для того, чтоб студент это все зазубрил, а для того, чтобы народ потом на практике не изобретал велосипедов, чтобы в случае, когда он столкнулся с проблемой, он мог вспомнить, что это уже было, такие проблемы люди уже решали, и по ключевым словам мог нагуглить, вспомнить, применить. Но почему то кем то считается, что практические знания необязательны и второстепенны, а то, что должно лежать только в подсознании на всякий случай, нужно постоянно помнить со всеми деталями. И типа если ты за 20 лет забыл карты Карно, ибо ни разу не применял после института — вон из индустрии, ты ничего не знаешь и не умеешь. Глупо это!
PS Кстати, весьма любопытно стало, раз уж я про Карно упомянул. На собеседованиях я не слышал, чтоб про это спрашивали. И как, мастера проводить собеседования сами вспомнят про оптимизацию булевых выражений через много лет? Или собеседования исключительно недавние студенты должны проводить ?
Re[4]: Фундаментальные основы программирования. Что нужно знать?
От: a_g_99 США http://www.hooli.xyz/
Дата: 31.05.12 05:40
Оценка:
Здравствуйте, elmal, Вы писали:
E>Для начала, было бы неплохо, чтоб образование давало хотя бы тот объем, который я описал. А то ведь не дает ни черта, в результате дохрена людей, считающих себя программистами, такое городят, что хоть волком вой. А если и пытается дать, то плохо, и на последних курсах, когда народ уже вообще на лекции не ходит. А надо бы на первых, и считать это все базисом. Во вторых — дискретку, алгоритмы и т.д — да, это давать надо. Но не для того, чтоб студент это все зазубрил, а для того, чтобы народ потом на практике не изобретал велосипедов, чтобы в случае, когда он столкнулся с проблемой, он мог вспомнить, что это уже было, такие проблемы люди уже решали, и по ключевым словам мог нагуглить, вспомнить, применить. Но почему то кем то считается, что практические знания необязательны и второстепенны, а то, что должно лежать только в подсознании на всякий случай, нужно постоянно помнить со всеми деталями. И типа если ты за 20 лет забыл карты Карно, ибо ни разу не применял после института — вон из индустрии, ты ничего не знаешь и не умеешь. Глупо это!
Должен быть строгий математический или CS базис. И да студент должен это зазубрить. Я до сих пор помню основные определения матанализа и тервера (хотя столько времени), не потому что умный, а потому что зубрили жестко.
А если у вас нет мат. аппарата в наличии, а вы просто умеете рассуждать и владеете предметной областью — вы не программист, вы системный аналитик (тоже честь вам и хвала ).

E>PS Кстати, весьма любопытно стало, раз уж я про Карно упомянул. На собеседованиях я не слышал, чтоб про это спрашивали. И как, мастера проводить собеседования сами вспомнят про оптимизацию булевых выражений через много лет? Или собеседования исключительно недавние студенты должны проводить ?

Я карты Карно не спрашиваю (сам не знаю). Ограничиваюсь асимптотикой, простыми алгоритмами сортировки, болтовней о структурах данных, простыми паттернами (LinkedList, очередь, стек) и основами мультизадачности. В финале даю задачку на обсуждаемые темы. Вообще это строго индивидуально и зависит от человека.
Про присваивание не спрашиваю, потому что это бред
Re[4]: Фундаментальные основы программирования. Что нужно знать?
От: _Obelisk_ Россия http://www.ibm.com
Дата: 31.05.12 18:17
Оценка:
Здравствуйте, elmal, Вы писали:

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


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

Потому и даются такие мелкие кирпичики как алгоритмы. Из мелких кирпичиков строится все остальное, но вот как строить — это учится на практике.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[5]: Фундаментальные основы программирования. Что нужно знать?
От: elmal  
Дата: 01.06.12 20:37
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

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

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

_O_>Потому и даются такие мелкие кирпичики как алгоритмы. Из мелких кирпичиков строится все остальное, но вот как строить — это учится на практике.

Угу. И если после 10 лет практической работы не можешь в деталях написать на бумажке quickSort со всеми оптимизациями возможными, а также на зубок не помнишь правила написания хеш функции, то есть отвечаешь не очень на это все уверенно, хоть и в общих чертах правильно — вон их профессии. На практические навыки плевать, главное чтоб изученное 15 лет назад от зубов отскакивало. Практические навыки вообще не важны, главное умение писать на листочке мегаоптимальный radixsort, причем со вводом, выводом и инклюдами.
Re[5]: Фундаментальные основы программирования. Что нужно знать?
От: Darooma Россия  
Дата: 02.07.12 06:30
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>Здравствуйте, elmal, Вы писали:


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


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


_O_>Потому и даются такие мелкие кирпичики как алгоритмы. Из мелких кирпичиков строится все остальное, но вот как строить — это учится на практике.


Согласен.
Re[5]: Фундаментальные основы программирования. Что нужно знать?
От: dolor Китай  
Дата: 05.07.12 13:03
Оценка: +1
_O_>Нельзя это дать на лекциях. Это практические навыки.

кроме лекций в вузах ничего не бывает?
Re: Фундаментальные основы программирования. Что нужно знать?
От: VladZharinov  
Дата: 14.07.12 18:13
Оценка: 13 (3)
Здравствуйте, Darooma, Вы писали:

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


D>1. Алгоритмы

D> а) Сортировки
D> б) Выборки
D> ....
D>2....

Знания, в общем, думаю, можно подразделить по взаимосвязанным направлениям:

1. Алгоритмы единичные и взаимоувязанные (для последовательного/параллельного исполнения).

2. Структуры данных — опять же обособленные и разделяемые.

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

Базовые умения (в частности, указанные elmal) можно рассматривать как обеспечение двуединого процесса моделирования/формализации. Идущего от предметного и неформального представления о задаче к модели, выполнимой одним из исполнителей алгоритмов. Как-то так...

Можно предложить и литературу:

В. Ш. Кауфман. Языки программирования. Концепции и принципы. — М.: ДМК-Пресс, 2011 — переиздание классической работы по анализу и синтезу ЯП. выдержка описание

Фридланд А.Я. Информатика: процессы, системы, ресурсы. – М.: БИНОМ. Лаборатория базовых знаний, 2003 — авторская работа с систематическим подходом. выдержка (учебник) описание

С.С. Лавров. Программирование. Математические основы, средства, теория. — БХВ-Петербург, 2001 — основная идея — рассмотрение средств выражения семантики программ и доказательства их правильности; разбираются императивная и некоторые другие парадигмы. выдержка описание

Винокуров Н.А., Ворожцов А.В. Практика и теория программирования. — в 2-х кн. — М.:Физматкнига, 2008 — Книга 1: Исполнители и вычисления (алгоритмы, языки и метаязыки, машины Тьюринга и Маркова, распознавание языков абстрактными исполнителями и др.). Доп. темы (теорема Гёделя, функциональное прог-е на примере Лисп, продукционное прг-е на примере Haskell, виртуализация и др.) описание; Книга 2: Прогязык Си (основы, работа в компиляторе, методы прг-я). Доп. темы (структуры данных и алгоритмы, проектирование надёжного ПО) описание.

Мозговой М.В. Алгоритмы, языки, автоматы, компиляторы. — СПб.:Наука и техника, 2006 — популярная до некоторой степени книга с элементами авторского подхода. описание
Автор(ы): М. В. Мозговой
Издательство: Наука и техника
Цена: 226р.

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


Карпов Ю.Г. Model Checkng. Верификация параллельных и распределённых программных систем. – СПб.: БХВ-Петербург, 2010 — обзорная работа, автор систематически представил текущие результаты по многим зарубежным источникам, дал наглядные примеры. описание выдержка

Петров Ю.П. Обеспечение достоверности и надежности компьютерных расчетов. – СПб.: БХВ-Петербург, 2004 — о том, что нужно знать, пользуясь пакетами численных/символьных расчётов и вычисляя вручную . описание выдержка

Новиков Ф. А. Дискретная математика. — СПб: Питер, 2011 — основные разделы дискретной математики и важнейшие алгоритмы на дискретных структурах данных на базе лекций автора. описание выдержка (из одного из пред. изд.)

Б. Мейер. Почувствуй класс. — М.: НОУ «ИНТУИТ»; БИНОМ, 2011 — основательный труд об ООП по контракту (в смысле, доказательном ). выдержка описание

Szyperski C. A., Gruntz D., Murer S. Component Software Beyond Object-Oriented Programming. Second Edition. — Pearson Education, 2002 — классическая работа по КОП (вроде собираются переводить). описание

Pfister C. Component Software — 1997, Cuno Pfister (Oberon Microsystems, Inc.) — старая обзорная работа по КОП. перевод (Пфистер К. Компонентное программное обеспечение; ограниченная лицензия)

С. А. Орлов, Б. Я. Цилькер. Организация ЭВМ и систем. — СПб: Питер, 2011 — вполне систематический учебник. описание

В. Г. Хорошевский. Архитектура вычислительных систем. — М.:Изд-во МГТУ им. Н. Э. Баумана, 2008 — справочник по существующим архитектурам. описание

Круз Р. Структуры данных и проектирование программ. — М.:БИНОМ — Лаборатория знаний, 2008 —
систематический курс программирования от структур данных на базе формализованной постановки задачи. выдержка описание

А. В. Бабичев. Распознавание и спецификация структур данных. — Ленанд, 2009 — оригинальная работа по математической формализации и верификации структур данных, понимаемых широко — как "отношения между вещами", представляющие связи сущностей реального мира. выдержка описание

Б. Пирс. Типы в языках программирования. — Лямбда пресс, Добросвет, 2012 — рассмотрение типов на математической основе. описание

Р. Миллер, Л. Боксер. Последовательные и параллельные алгоритмы. — М.:Бином. Лаборатория знаний, 2006 — рассмотрение основных классов алгоритмов для ряда моделей исполнителей, включая асимптотику. выдержка описание

Э. Эванс. Предметно-ориентированное проектирование. — М.: Вильямс, 2010 — работа о проектировании программ на базе моделей предметных областей. описание

Н. Вирт, Ю. Гуткнехт. Разработка операционной системы и компилятора. Проект Оберон. — ДМК Пресс, 2012 — подробное описание проекта и реализации ОС Оберон. выдержка описание

Бабаян Б.А. Защищенные информационные системы — статья о подходе к безопасной архитектуре, реализованном в машинах и микропроцессорах "Эльбрус". выдержка (без илл.)

Понятное дело, есть и ряд общеизвестных работ по некоторым вопросам. Танненбаума тут уже упоминали... Вирт с его "Алгоритмами и структурами"... С.З. Свердлов... В.Н. Касьянов и В.А. Евстигнеев...
По более общим вопросам, обсуждавшимся в ЖЖ, можно ещё ряд источников найти.
Re: Фундаментальные основы программирования. Что нужно знать?
От: MxMsk Португалия  
Дата: 14.07.12 19:17
Оценка:
Здравствуйте, Darooma, Вы писали:

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

Давно уже замечаю, что вопрос бесполезный. Каждый пишет про то, чем занимается. Вот кто-то в хитрожопых алгоритмах, он будет до посинения доказывать, что нужно заучить наизусть radix sort для массивов. Другой в архитекторах ходит, у него всякие SOLID превыше всего. Третий увлекся XP, стянет доказывать, что главное — TDD. Ну, а мне импонирует мнение Спольски по этому вопросу.
Re[4]: Фундаментальные основы программирования. Что нужно знать?
От: Sharowarsheg  
Дата: 14.07.12 19:53
Оценка:
Здравствуйте, elmal, Вы писали:

D>>не то, слишком специфично.

E>Что значит слишком специфично. Это именно Те знания, которые всегда или часто нужны в программировании, но которые не зависят ни от языки ни от платформы..

и от задачи тоже почти не зависят
Re: Фундаментальные основы программирования. Что нужно знать?
От: Abyx Россия  
Дата: 14.07.12 20:53
Оценка:
Здравствуйте, Darooma, Вы писали:

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


1. DRY.
2. SOLID.
3. английский язык (чтение).
In Zen We Trust
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.