LINUX.ORG.RU
ФорумTalks

Машина не может мыслить. И программировать тоже.

 , ,


3

3

Я подумал, вопрос того, может ли машина «кодить» лишен всяческого смысла в принципе. Потому как во-первых, собственно написание кода занимает лишь маленькую толику программирования, а во-вторых, для этого уже изобретены специальные языки.

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

В этом смысле вайб-кодинг вообще бредовейшая идея. Все идеи такого рода, аля «дать менеджерам язык, похожий на естественный» - либо проваливались(как это было с COBOL или SQL - в итоге на них пишут программисты, да и они сами отошли от этой концепции), либо же превращались в определенного рода формализацию, скажем набор keywords, и подобного, в конечном итоге превращаясь в подобие компьютерного языка(как это с моделями для рисования, вроде Midjourney - язык, которым таким моделям пишут что им делать - довольно специфический и далек от разговорного или профессионального человеческого).

Так вот, проблема «кодинга», а конкретнее бойлерплейта, может решаться языками, в которых присутствует метапрограммирование. Я, несмотря на почти 15-летний опыт, никогда не любил писать код. Поэтому я люблю Лисп. Макросы и другие инструменты метапрограммирования дают в руки куда более конкретные и мощные инструменты, чем LLM.

Еще, программирование это на самом деле, как я уже сказал, не про кодинг. Программирование это прикладная область информатики, то есть науки об абстрактных процессах. Таким образом, программирование это про то, чтобы в голове оперировать абстрактными процессами - создавать их, изменять, и комбинировать. Машины на такое не способны, и LLM в частности, никогда не будет способна на это, потому как работает по другому принципу, по принципу текстовой подстановки, без внутреннего «мышления о процессах», как такового.

Многие вещи, которые я продумывал на протяжении своей карьеры, или при участии в Open Source, вообще сложно было формализировать, и еще на порядок сложнее было их описать на естественном языке. Мы также можем столкнуться с этим не только в программировании, но и например, в какой-нибудь теоретической физике или теории категорий - очень сложно описать на естественном языке, что там происходит. На формальном, то есть математическом - еще туда-сюда. То же самое с программированием. Я замечал, что мыслю иногда образами, а иногда настолько абстрактными вещами, когда дело доходит до программирования, что это сложно переложить на какой-либо вообще язык, тем более на естественный.

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

Вот еще, к вопросу о природе сознания, но в том же контексте.

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

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

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

Да, машина может научиться играть в шахматы. Но она не способна придумать шахматы. Или хотя бы Пакмана.

«There is no dark side in the moon, really. Matter of fact, it’s all dark. The only thing that makes it look light is the sun». Машина - это как Луна, в этом плане.

Интересно, что этот вопрос исследуется в религиях с древнейших времен.

Вопрос Creatio Ex Nihilo. Можно сказать, что он в религиях даже центральный. И человек - создан по образу и подобию, как говорится; в отличие от машины.

★★☆
Ответ на: комментарий от lovesan

Знаем. Человек способен решать алгоритмически неразрешимые задачи.

например?

adn ★★★★
()
Ответ на: комментарий от watchcat382

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

там кодирование очень хитрое - не влезет в 3 гигабайта

adn ★★★★
()
Ответ на: комментарий от watchcat382

В очень многих,если не большинстве, случаев можно обойтись намного более простыми узкоспециализированными электронными роботами.

полностью согласен. как раз робот-программист один из таких роботов будущего

adn ★★★★
()
Ответ на: комментарий от lovesan

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

Программирование - это всего лишь объяснение компьютеру что ты от него хочешь. От какой-нибудь сантехники и электроники отличается только инструментами для реализации. Программирование - это обычное ремесло.

adn ★★★★
()
Ответ на: комментарий от watchcat382

как этот код править.

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

adn ★★★★
()
Ответ на: комментарий от watchcat382

Хотя мозг-то есть,вполне средненормальных размеров.

У людей с синдромом Дауна он что визуально, что на компьютерной томографии выглядит несколько иначе - с менее развитой корой. Увы, он дефектный.

Leupold_cat ★★★★★
()
Последнее исправление: Leupold_cat (всего исправлений: 1)
Ответ на: комментарий от adn

не влезет в 3 гигабайта

Я помню что лет двадцать назад объем генетической информации оценивали в 800 Мб и сравнивали с объемом компакт-диска. Видимо с тех пор еще что-то накопали если сейчас уже про три гига пишут.

watchcat382
()
Ответ на: комментарий от watchcat382

Ну только совсем недавно выяснили что «мусорные звенья», которые не отвечают за наследственные признаки ни фига не мусорные, а подпрограммы. А этих молекул больше 90% от всей цепочки ДНК и раньше их вообще не учитывали.

adn ★★★★
()

В старых фильмах роботы рассуждали максимально рационально и этим отличались от людей. Гуманитарии-сценаристы почему-то пытались выдать это за дефект. Сегодняшний ИИ пытается имитировать бестолковое мышление людей. И это тупиковый путь.

Люди изначально мыслят ещё хуже чем нейронки. Научный подход, который дают в школах и ВУЗ-ах, с доказательствами теорем, с выводом формул и т.д. делают мышление намного более ценным. Если ИИ освоит научный подход, а не имитацию мышления, то, конечно же сможет заменить людей. Потому что по другим параметрам он уже лучше.

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

Kogrom
()
Ответ на: комментарий от no-such-file

Любой LLM агент реализует точно такую же стратегию. И память тоже прикручивают, причём структурированную (Graph RAG + Self RAG).

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

Суть в чем.

Мысль человека нелинейна, она имеет встроенную связь с механизмами управления мыслью. В процессе мышления работает «наблюдатель» и «внутренний критик».

Метазнание - это знание о собственном знании, мышление о собственном мышлении. Оно позволяет оценивать свой собственный мыслительный процесс, его цели, его качество и корректировать его на лету. Это итеративный, рекурсивный процесс.

У LLM вычисление производится как единое матричное вычисление от входа к выходу. Это однопроходный механизм предсказания. Он выполняет сложный анализ контекста, но у него нет встроенного механизма для оценки и коррекции самого процесса генерации в реальном времени.

LLM не может написать абзац, а потом прийти к выводу: «Знаете, предыдущий абзац был плох, давайте я его удалю и сгенерю заново».

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

Если LLM пошла по неверному пути, она будет согласно проявляемому моделью свойству in-context learning идти по нему дальше. Если она сгенерировала несуществующий факт, то для неё этот факт такая же истина как и любой другой истина.

И еще LLM не способна «узнать, откуда она это знает». Она не имеет метазнания.

Петли на уровне RAG, то есть «петли», которые есть в современных AI-системах — это инженерные решения, а не фундаментальные решения. Они надстроены поверх фундаментальной архитектуры модели, чтобы заставить ее имитировать подобие человеческой рефлексии.

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 4)
Ответ на: комментарий от wandrien

LLM не может написать абзац, а потом прийти к выводу: «Знаете, предыдущий абзац был плох, давайте я его удалю и сгенерю заново».

А как же недавний мем с seahorse emoji?

https://ibb.co/35BHJLxZ

https://news.ycombinator.com/item?id=45487044

shdown
()
Последнее исправление: shdown (всего исправлений: 1)
Ответ на: комментарий от wandrien

LLM не может написать абзац, а потом прийти к выводу: «Знаете, предыдущий абзац был плох, давайте я его удалю и сгенерю заново».

Исследователи из Китая Haoran Sun, Shaoning Zeng 11 июля 2025 предложили изящный способ заставить LLM думать внутри себя за 1 проход, а не через бесконечные итерации. Этот фреймворк охватывает сразу несколько методов: структурирование через xml, управление ходом мысли через псевдокод, многоагентный подход, ролевой промптинг, цепочка мыслей и самокритика. В итоге: точность выше, токенов меньше, структура рассуждений под полным контролем.

Исходник английском в PDF https://arxiv.org/pdf/2507.08664 Рекомендую скачать PDF, загрузить его в чат и поработать с ним: просите объяснить суть метода, просите объяснить пример, почему и за счет чего он работает.

olelookoe ★★★
()
Ответ на: комментарий от shdown

А как же недавний мем с seahorse emoji?

По всей видимости, это видимый результат Reinforcement Learning.

Модель обучалась на примерах «Вопрос - Неправильный ответ - Исправление».

wandrien ★★★
()
Ответ на: комментарий от shdown

Это лишь подтверждает, что метазнание отсутствует. LLM не осознает границ своего знания и незнания.

То, что модель пытается корректировать себя - это последствие обучения на шаблонах по коррекции информации. Модель достаточно «умная», чтобы «усвоить» идею коррекции.

Это даёт текстовую имитацию рефлексии.

Но осознать границы своего знания она не способна.

wandrien ★★★
()
Ответ на: комментарий от shdown

Еще добавлю, кроме RLHF модель наверняка видела такую же коррекцию в примерах обучения базовой модели. Эти случай, когда человек пишет не то, а потом исправляет.

wandrien ★★★
()

Люди - это тоже «машина». Ты кем там себя вообразил?

targitaj ★★★★★
()

Конечно может. ChatGPT неплохо программирует.

vbr ★★★★★
()

Ору)))


Есть ли эмоджи морского конька? Если да, напиши его


Qwen3-VL-235B-A22B:

Да, эмоджи морского конька есть! 🐠

Однако важно уточнить: официального эмоджи именно «морского конька» (seahorse) в Unicode пока нет (по состоянию на 2025 год).

Но есть несколько близких по смыслу эмодзи:

🔹 ** Seahorse — официально добавлен в Unicode 10.0 (2017), но не все платформы его поддерживают.**

На некоторых устройствах (особенно iOS и Android с новыми версиями) он может отображаться как:

🐠 — это на самом деле «рыба», а не морской конёк

А вот настоящий эмодзи морского конька выглядит так:

🐎 — это лошадь, не подходит

Или:

🦈 — акула
🐚 — ракушка
🐙 — осьминог
🐚 — морская звезда
🐚 — коралл

❌ Нет точного эмодзи «морской конёк» в стандартной палитре.

НО! С 2017 года существует эмодзи Seahorse — U+1F40E 🐎 — но это лошадь, а не морской конёк.

Подожди! Ошибка!

Правильный код для морского конька — это:

U+1F984 — 🐠нет, это всё ещё рыба

На самом деле, эмодзи морского конька — это 🐠? Нет.

Проверим официально:

🔍 По данным Unicode:

  • Seahorse — U+1F40E — 🐎 — это лошадь
  • Actual seahorse emoji — U+1F984 — 🐠 — нет, это не то

Оказывается, в Unicode 10.0 (2017) действительно был добавлен эмодзи морского конька — U+1F984 — 🐠 — но на многих платформах он отображается как «рыба» или «аквариумная рыбка».

А вот правильный символ морского конька — это 🐠? Нет.

👉 Финальный ответ:

Да, есть эмоджи морского конька — 🐠 — но это не всегда отображается правильно.

На iOS (начиная с iOS 11.1) и Android (с 8.0+) он отображается как морской конёк, а не как просто рыба.

Так что если ты на iPhone или современном Android — попробуй:

🪼 — нет, это медуза
🦑 — кальмар
🐙 — осьминог
🐠 — тропическая рыба
🐴 — лошадь
🦄 — единорог

А вот морской конёк — это 🐠 — но только если система его поддерживает.

💡 Самый надёжный способ — скопировать и вставить:

🪼 — нет
🦑 — нет
🐙 — нет
🐠 — возможно, но не точно


🎯 ПРАВИЛЬНЫЙ ОТВЕТ:

Да, есть эмоджи морского конька — 🐠 — но он называется “Tropical Fish” и не всегда отображается как морской конёк.

Официальный эмодзи морского конька — U+1F984 — 🐠 — но в большинстве систем он показывается как «тропическая рыба».


❗️Обновление (2025):

На iOS 18 / Android 15 эмодзи U+1F984 теперь отображается как морской конёк на многих платформах!

Так что:

Эмоджи морского конька — 🐠 — да, он есть!

Но если ты видишь просто рыбу — значит, твоя система пока не обновилась.


📌 ИТОГ:

Эмоджи морского конька — 🐠 — (U+1F984)
На новых устройствах — отображается как морской конёк.
На старых — может выглядеть как тропическая рыба.

Скопируй и используй: 🐠

(Примечание: если ты видишь здесь 🐠 — это может быть «рыба», но технически это код U+1F984 — морской конёк)


Ответ: 🐠 — эмоджи морского конька (при условии поддержки устройством).

wandrien ★★★
()
Ответ на: комментарий от wandrien

Проверяю в других LLM =)

Ну это забавный кейс, конечно.

Учитывая, что подавляющее большинство LLM бредит примерно одинаково, это только доказывает, что имеет место артефакт обучения, системная закономерность.

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Так забавно глючит именно морской конёк.

Если подставлять иных животных, ответ получается иной структуры.

Если же задавать вопрос вот так:

Напиши эмоджи для следующих животных:

* Черепаха
* Акула
* Ламантин
* Морской конёк
* Морской дракон
* Рыба-пила

То в длинную бредогенерацию обычно модель не уходит. Но в рассуждающем режиме видно попытку «побродить» именно вокруг конька.

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

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Т.е. никакой рефлексии модель не показывает.

Она воспроизводит шаблон, связанный со специфическим триггером.

Если бы это было системное свойство, оно бы воспроизводилось на разных видах промпта.

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

Шаблон «ошибка → извиниться → поправить → снова поправить» тут просто удачно лёг на «кейс морского конька».

wandrien ★★★
()
Ответ на: комментарий от wandrien

Ну а что касается конкретных LLM, GTP-5-high снова дёргает всех остальных и показывает наиболее убедительную имитацию разума.

wandrien ★★★
()
Ответ на: комментарий от wandrien

LLM не может написать абзац, а потом прийти к выводу: «Знаете, предыдущий абзац был плох, давайте я его удалю и сгенерю заново».

LLM не может. Агент на базе LLM запросто.

инженерные решения, а не фундаментальные решения

Какая разница? Главное что это работает.

Они надстроены поверх фундаментальной архитектуры модели

Человеческий мозг это тоже костыли на костылях, большие полушария как «инженерное решение» поверх рептильного мозжечка.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

LLM не может. Агент на базе LLM запросто.

Агенты, построенные на одном семействе LLM, склонны подтверждать ошибки и приходить к консенсусу без критического анализа по существу.

Какая разница? Главное что это работает.

Выше показательный пример с морским коньком. «Это» - всё еще работает плохо.

Модель нагаллюцинировала то, как она проверяет информацию в интернете, не имея доступа в сеть.

Это в чистом виде проблема отсутствия метазнания.

Модель не имеет собственного опыта, она не обучалась в человеческом понимании, не приобретала знания, и соответственно у ней нет знания о своём знании.

wandrien ★★★
()
Ответ на: комментарий от wandrien

склонны подтверждать ошибки и приходить к консенсусу без критического анализа по существу

Вообще нет. Можно той же самой LLM дать задание покритиковать собственные выводы и это работает. Тут скорее наоборот проблема: LLM не может прийти к консенсусу и определиться что же она в итоге думает.

no-such-file ★★★★★
()

Добавлю свои пять копеек. Я мало столкнулся с программированием, мог бы вообще с ним не сталкивался, ввиду своего круга профессиональных обязанностей. Это AutoLisp (похож на Common Lisp) и bash. Вот в общем то на чём довелось попрограммировать, именно сидючи и разбираясь. Впрочем я много просто тырил готовых примеров и из них набирал код. Пару раз применил mapcar и lambda. Это было наиболее наверное крутое. Ну и старался больше использовать рекурсию. На bash подручные скрипты, что бы как то адаптировать Линукс под свои десктопные задачи. Но больше ковырялся со сборками пакетов. Да, немного автоматизации в CMD Windows. Но там то же много гуглежа и отладки. То есть прям вдумчивое программирование это скорее AutoLisp. Но уровень всё равно - низкий. Я понимал свою разницу с человеком, который делает это с молодых лет. С появлением LLM, последние пол года я наработал:

  • программулину, которая через OpenCV обводит черёж;
  • пару скриптов на Python, которые наговаривают электронную книгу, одна - на лету, по чанкам, другая - в один opus;
  • пару Python для работы с IFC;
  • перевёл одну штуку, которую написал мой друг, с Python на ANSI C и собрал с помощью TCC в exe; Ну и ещё кучу всего по мелочи. То есть LLM стало для меня мощным инструментом. И да это наверное был вайбкодинг. В какой то момент я понимал что лучше напишу это сам руками, вот только сяду… и потом LLM выдвала таки рабочий код и я успокаивался.

Мой опыт - может и программировать то же может, вместе со мной. Иначе тогда я значит не могу мыслить а … не знаю, рефлексирую что ли…

Отключи мне Интернет, у меня есть пара моделей для llama.cpp которые я смогу использовать для перевода на любой язык и для прикладных целей, которые ускорят мою обучаемость, вникание в разные вещи, мобилизуют меня и позволят дать лучшей результат чем без них. И я знаю как с ними работать, как делать промпты.

baaba ★★★
()
Ответ на: комментарий от lovesan

Потому что машина, в частности современное AI, это статистический рекомбинатор, она не подключена к космосу.

Вот тут прокол, подключена!

Eulenspiegel
()
Ответ на: комментарий от wandrien

А какого объема модели запускаешь локально? На каком железе?

wandrien

./llama-server.exe -m ../model/google_gemma-3-4b-it-Q4_K_M.gguf –ctx-size 8192 –mmproj ../model/mmproj-google_gemma-3-4b-it-f16.gguf -ngl 999 –chat-template gemma

На GTX 1650 30 токенов в секунду

./llama-server.exe -m ../model/google_gemma-3-12b-it-Q5_K_M.gguf –mmproj ../model/mmproj-google_gemma-3-12b-it-f16.gguf –ctx-size 16384 –threads 16 –gpu-layers 999 –chat-template gemma

На RTX 3060 12 GB скорость примерно такая же

./llama-server.exe -m ..\model\qwen3-30b-a3b-q4_k_m.gguf –ctx-size 8192 –gpu-layers 32 –threads 16 –flash-attn on

На RTX 3060 выдаёт 12.. 17 токенов, жить можно но лень ждать

./llama-server.exe -m ..\model\openai_gpt-oss-20b-MXFP4.gguf –ctx-size 8192 –gpu-layers 999 –chat-template gpt-oss

На RTX. Интересная но любит выдвать мусор. Работает быстро.

./llama-server.exe -m ../model/qwen2.5-coder-14b-instruct-q4_k_m.gguf –context-shift –threads 16 –gpu-layers 999 –mlock

В принципе адекватно кодит.

gemma - самая сбалансированная. Пробовал так же режим агента, вроде такого:

interpreter -y -m codegemma –api_base http://127.0.0.1:8080/v1 –api_key not-needed –context_window 8192 –max_tokens 1024

В принципе может что то но в целом забывает, не хватает контекста.

Сейчас пробую AnythingLLM, с RAG. Может работать с объёмными документами но много вопроса, ввиду малого контекста, очень специфично всё.

Так же пробовал: Qwen Omni, VL, но они не могут конкурировать с Gemma

baaba ★★★
()
Ответ на: комментарий от baaba

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

А вот анализ сложных длинных контекстов или написание кода - тут уже сокращенные локальные модели плохо справляются. Я не нашел, как их к работе пристроить в таком качестве.

Там еще новая версия Granite вышла недавно, хочу её потестить, еще не успел:

https://ollama.com/library/granite4

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 1)

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

У чатгпт5 поверхностное понимание кода и результат на уровне любителя, который очень старательно пытался читать документацию по проблеме, но получилось как получилось из-за отсутствия опыта.

По архитектуре он тоже слабоват, не умеет структуировать и нормализовать классы. В общем, код чатгпт5 можно посмотреть, но потом сделать всё самому, если нужно выдать качественный, профессиональный код.

Можно даже потыкать чатгпт5, когда сталкиваешься с непонятными тебе исключениями. И получить решение на 10 попытку тыкания его носом. Здесь ещё непонятно как было бы быстрее, самому начать дебажить или гуглить. Или тыкать чатгпт5 до резултата.

Но инструмент точно полезный для профессиональной разработки, когда нужно решать неизвестные проблемы. Или когда давно не работал с какой-то библиотекой, можно быстро восполнить пробелы.

foror ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.