The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Instagram открыл код MonkeyType, системы аннотации типов для Python

22.12.2017 11:18

Сервис Instagram объявил об открытии исходных текстов проекта MonkeyType, в рамках которого разработана система для языка Python, позволяющая генерировать аннотации типов на основе сбора информации о типах переменных во время выполнения кода. Код открыт под лицензией BSD. Для работы требуется Python 3.6 (аннотации сохраняются в атрибуте __annotations__ , а не в комментариях) и опционально утилита retype для подстановки аннотаций в код.

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

Для сбора информации о типах применяется вызов sys.setprofile, предоставляемый в Python для перехвата событий вызова/завершения функций и результатов работы генераторов/yield. Вначале Python-приложение запускается под контролем MonkeyType в режиме трассировки, в ходе которой определяются типы аргументов и возвращаемых значений функций и методов во всех импортированных модулях. На основании полученных сведений формируется дамп трассировки (monkeytype.sqlite3), на базе которого затем могут быть сгенерированы файлы-заглушки (stub) для утилиты retype или выполнена подстановка черновых аннотаций типов прямо в исходные тексты.

  1. Главная ссылка к новости (https://engineering.instagram....)
  2. OpenNews: Выпуск Cython 0.27, компилятора для языка Python
  3. OpenNews: Facebook открыл код статического анализатора для языка JavaScript
  4. OpenNews: Выпуск языка программирования Python 3.6
  5. OpenNews: Компания Bloomberg представила открытый оптимизирующий компилятор BuckleScript
  6. OpenNews: Google развивает AtScript, вариант JavaScript с аннотациями типов
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/47787-python
Ключевые слова: python, type, debug
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (126) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:57, 22/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Жаль что эти аннотации не проверяются в debug-рантайме. Или уже запилили?
     
     
  • 2.140, Аноним (-), 19:24, 25/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Есть библиотеки, которые на основе аннотаций строят дополнительные проверки входных параметров. В остальном в Python это больше дополнительная информация, не основная.
     

  • 1.3, Аноним (-), 12:51, 22/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    сначала долго объясняли преимущества динамической типизации, уверяя, что она не является источником ошибок. ветер изменился?
     
     
  • 2.5, анонимбр (?), 12:53, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    потому динамическая типизация == постоянная попоболь ибо никогда нельзя доверять коду который раз и сломался:)
     
     
  • 3.11, Undefined (?), 14:25, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    "Ломание кода" - проблема организации процесса разработки, а не языков. Нужны юнит-тесты, ревью, документация, культура какая-то.

    Алсо вангую, опять сейчас начнут путать статическую типизацию со строгой. В Питоне, в отличие от того же JS, нельзя, грубо говоря, сложить теплое с мягким. Данные должны быть одного типа, приведены в явном виде, если потребуется.

     
     
  • 4.18, Crazy Alex (ok), 16:20, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +10 +/
    1) Баг, пойманный на ревью или тестами всё ещё дороже бага, пойманного на этвпе компиляции - на него времени больше потрачено
    2) Типы - это гарантированно верная документация кода. И это упрощает сопровождение.
     
     
  • 5.22, Аноним (-), 16:45, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    если вы позволяете разработчику публиковать код для review до того как пройдут хотя бы базовые тесты - мне вас жаль.
    Искренне жаль.
     
     
  • 6.41, Crazy Alex (ok), 19:24, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Это вам примерещилось что-то.

    1) для динамики приходится писать больше тестов для покрытия вот этих глупых кейсов с типами. Это время на написание и поддержку. И на то, чтобы в ревью ещё и этот аспект отсмотреть.
    2) теоретически юнит-тесты, конечно, должны быть быстрыми, но на практике они частенько ни хрена не быстрые, и времени на их прогон у разработчика уходит прилично, ещё до CI.
    3) система типов перекрывает проблемы с типами гораздо надёжнее и не умеет "случайно пропустить" какой-то случай.

     
  • 4.27, M i M (?), 17:28, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Можно Например так cat warm_plus_soft py class Warm object def __init... большой текст свёрнут, показать
     
     
  • 5.52, Аноним (-), 21:46, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ох лол. Если предусмотреть возможность сложения тёплого с мягким, то конечно можно.
     
  • 5.97, анонимбр (?), 20:14, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Можно, но не нужно изобретать квадратные колеса
     
  • 4.49, qsdg (ok), 21:07, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Нужны юнит-тесты, ревью, документация, культура какая-то.

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

    Потом нам выделили ресурсы переписать всё на Жабе, там много всего было, конечно, но соотношение строчек тестов/кода упало до 0.8 или типа того. Мы наконец перестали покрывать тестами синтаксис вместо логики.

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

     
     
  • 5.96, анонимбр (?), 20:13, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Вот и мне это осточертело. Плюс для автодополнения в IDE все равно нужен тип, но через ()().
    """
    :type val:путь к классу
    """
    На Java добро не дают:(
     
     
  • 6.115, Аноним (-), 00:20, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > На Java добро не дают:(

    На go перейдите, хипстюки.

    А так дело наверное в том что
    >> Компания большая, силиконовая, всем известная, культура кода и ревью на высоком уровне,
    >> так что это не играло роли.

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

     
  • 3.28, Vkni (ok), 17:30, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > потому динамическая типизация == постоянная попоболь ибо никогда нельзя доверять коду который
    > раз и сломался:)

    Это как бы давно очевидно. Шутка с Питоном в том, что его активно внедрять стали относительно недавно, а языки с a-hoc полиморфизмом известны уже лет 35 (семейство ML).

    Т.е., если сразу взять что-то типа Ocaml'а или SML'я (к 95-му были быстрые реализации), можно было иметь ту же самую гибкость и полный вывод типов в статике. Но индустрия решила пойти по граблям.

     
     
  • 4.42, Crazy Alex (ok), 19:29, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Индустрии не подошла сложность ML-языков. Она, чёрт возьми, индустрия, ей надо много и предсказуемо, а здесь чем проще - тем лучше. В результате вывод типов мы получили, но совсем не в ML, а вовсе даже в плюсах, и что важнее - в Go и C#.

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

     
  • 4.59, Ф (?), 00:47, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот ни хрена в ML'ах нету той же самой гибкости.

    1) Перегрузки нет. В OCaml'е хочешь напечатать int - используй print_int, хочешь напечатать string - используй print_string. Даже для float'ов все операции свои (+., -., *., /.). Прям офигенная экономия от того, что не надо писать типы.

    2) Хочешь иметь объект "клиент" с полем "имя" и объект "продавец" с полем "имя"? Поля начинают друг друга херачить, потому что они функции в глобальном неймспейсе. Приходится называть поля "имяКлиента" и "имяПродавца". Зато язык не требует указывать типы, да.

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

     
     
  • 5.142, Vkni (ok), 05:56, 27/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    1. Да, по-хорошему, нужны классы типов.

    2. Для этого есть модули.

    3. Совершенно не обязательно - есть такая конструкция failwith "Привет". Это вроде undefined в Хаскеле. Кроме того, народ работает над улучшением диагностики.

    ----------------
    В любом случае, Питон до более-менее надёжных программ такой длины, при которой возникают эти проблемы, просто не добирается. А С++ этак раза в 2-3 медленнее в разработке.

     
     
  • 6.143, Ф (?), 12:50, 28/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    1. Классы типов - хитрая штука, и ни разу не замена питону. В ML'ях хотя бы было такое свойство: программа либо вообще не компилируется, либо имеет одну главную типизацию, из которой все остальные выводятся как частные случаи. Классы типов рушат это свойство, и программа может перестать работать (но продолжать компилироваться), если стереть аннотации типов.

    2. типа

    import Клиент as К
    import Продавец аs П
    ... К.имя...
    ... П.имя...

    ?
    ну ладно, пусть так

    3. я не про exceptions, я про то, что программа не компилируется из-за неправильных типов, но ошибка выдается не там, где она есть, а где-то глубоко внутри функции, которая сама-то правильная, но типы явно не прописаны.

    ----------
    вот поэтому ынтырпрайз пишет на джаве

     
     
  • 7.144, Vkni (ok), 07:54, 29/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Не Классы типов, если нормально написаны, это свойство практически не рушат Кр... большой текст свёрнут, показать
     
  • 4.64, Anonymoustus (ok), 02:55, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Умные программисты встречаются весьма редко, а делать и продавать гoвнoпродукт надо каждый день. Так что индустрия решила нанимать обезьян с модными молодёжными фреймворками для быстрой разработки. Катастрофические последствия чего мы наблюдаем повсеместно. И самолёты, кстати, от этого уже падают.
     
     
  • 5.70, Аноним (-), 04:10, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Умные программисты встречаются весьма редко, а делать и продавать гoвнoпродукт надо каждый
    > день. Так что индустрия решила нанимать обезьян с модными молодёжными фреймворками
    > для быстрой разработки. Катастрофические последствия чего мы наблюдаем повсеместно. И
    > самолёты, кстати, от этого уже падают.

    Очень интересно, какие хипстерские фреймворки и в каком самолете были использованы? А то авиаторы насчет надежности достаточно повернуты и у них можно поучиться софт писать и делать надежно.

     
  • 5.80, Аноним (-), 13:19, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > И самолёты, кстати, от этого уже падают.

    В целом согласен, но про самолёты хотелось бы пруфов.

     
     
  • 6.81, Аноним (-), 13:42, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Он ошибся, не самолеты а спутники!
     
     
  • 7.83, Anonymoustus (ok), 14:55, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Не ошибся, просто привёл в пример первое пришедшее на ум. Так-то эта проблема имеет место во всей сложной технике. Включая, опять же для примера, автомобили, а которых может «сойти с ума» бортовой компьютер, управляющий, в числе прочего, тормозной системой, отчего счастливый водитель может уехать в больницу или на кладбище — и всё лишь потому, что фанатично верующие в свой модный фреймворк макаки убедили компанию сделать компьютер под линукс, а не под QNX, и сэкономить три копейки «прямо щяс», впоследствии потеряв на судебных исках миллионы.
     
     
  • 8.90, Аноним (-), 18:38, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чтобы умничать - надо хоть немного разбираться как это устроено Что такое CAN и... большой текст свёрнут, показать
     
     
  • 9.98, Anonymoustus (ok), 20:33, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https www viva64 com ru b 0439 Распедальте несведущим читателям, что на чём и... текст свёрнут, показать
     
     
  • 10.102, Аноним (-), 21:30, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    И где в твоей рекламной ссылке написано про модные фреймворки, Linux, QNX или б... текст свёрнут, показать
     
  • 10.103, Аноним (-), 22:09, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Там висят рассуждизмы и реклама Дяденька, у меня QNX вотпрямща в виртуалке запу... текст свёрнут, показать
     
  • 9.105, Анонимм (??), 22:29, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Пофисил, не стоит благодарности Нет таких интуитивных человеческих рефлексов ... большой текст свёрнут, показать
     
     
  • 10.116, Аноним (-), 00:40, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Это нормальное поведение обычного индивида - если надо резко тормозить, значит н... большой текст свёрнут, показать
     
     
  • 11.119, Анонимм (??), 01:21, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Тут все дело в том, что на достаточно сыпучем грунте перед заблокированными коле... текст свёрнут, показать
     
     
  • 12.128, Аноним (-), 02:42, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Большинство автомобилистов предпочитает ездить по асфальту или какому-то его под... текст свёрнут, показать
     
     
  • 13.130, Аноним (-), 05:39, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен Снег ведь всегда убирают вовремя, а за МКАДом жизни нет Или автомобил... текст свёрнут, показать
     
     
  • 14.138, Аноним (-), 21:27, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Представляешь, по умолчанию предполагается что автомобили ездят по асфальту Бол... текст свёрнут, показать
     
  • 9.121, лютый жабист__ (?), 01:31, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не интересовался данным вопросом, но уверен, что тормоза и рулевое вообще не сид... текст свёрнут, показать
     
     
  • 10.125, Аноним (-), 02:15, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ничуть В авто с ABS и контролем курсовой устойчивости через CAN связаны тормоза... текст свёрнут, показать
     
     
  • 11.127, Аноним (-), 02:40, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Пещерные чудаки с тазиками никак не могут взять в толк что мир изменился и архит... текст свёрнут, показать
     
  • 10.126, Аноним (-), 02:35, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Чувак на хабре довольно основательно разреверсил свою машину и подробно описал т... большой текст свёрнут, показать
     
  • 6.82, Anonymoustus (ok), 14:48, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Сперва хотел ответить, что легко гуглится, но это в самом деле не та тема, котор... большой текст свёрнут, показать
     
     
  • 7.117, Аноним (-), 00:56, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А можно взять и сделать иначе - МК для низкоуровневого управления и обработки с... большой текст свёрнут, показать
     
  • 7.132, Аноним (-), 12:58, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > для управления станком стоимостью в миллион долларов лучше использовать DOS с его простыми, но эффективными средствами и написанную для этого специализированную алгоритмически простую программу, а не ОС общего назначения

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

     
  • 6.86, Anonymoustus (ok), 16:23, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Вот ещё из коментов к статьям по ссылкам, что я написал: http://www-users.math.umn.edu/~arnold/disasters/disasters.html
     
  • 2.20, Crazy Alex (ok), 16:24, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Просто софт стал сложнее.

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

     
     
  • 3.29, Vkni (ok), 17:32, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Другое дело, что это несложно предвидеть было и брать не питон, а
    > что-то статически типизируемое, но, может, не нашлось ничего подходящего...

    SML/Ocaml же.

     
     
  • 4.43, Crazy Alex (ok), 19:30, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Шутишь, да? Так и представил себе всех этих миддлов, клепающих на окамле... Вот go - тот да, был бы подходящим выбором, пожалуй.
     
     
  • 5.122, Vkni (ok), 01:54, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Шутишь, да? Так и представил себе всех этих миддлов, клепающих на окамле...

    А что там такого сложного? Особенно после SICP. Вот, скажем, "Введение в Стандартный ML" у меня лежит, там 48 страниц - это базовый язык, ну и оставшиеся до 95-ти - язык описания модулей.

    > Вот go - тот да, был бы подходящим выбором, пожалуй.

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

     
  • 4.44, Crazy Alex (ok), 19:32, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Когти в клавиатуре застряли :-) Хотя можно и дядюшку Фрейда приплести - гнусная тенденция на самом деле, с ростом системы приходится тратить всё больший процент ресурсов на то, чтобы она просто не развалилась, и это не лечится. Что, кстати, далеко не все осознают.
     
     
  • 5.112, Vkni (ok), 23:56, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > с ростом системы приходится тратить всё больший процент ресурсов на то,
    > чтобы она просто не развалилась, и
    > это не лечится. Что, кстати, далеко не все осознают.

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

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

     
  • 3.84, Anonymoustus (ok), 15:12, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Просто софт стал сложнее.

    Самое время задаться вопросом: почему?

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

     
     
  • 4.93, Аноним (-), 19:42, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Почему палку-копалку заменили более сложной лопатой А потом и самосвалы с экска... большой текст свёрнут, показать
     
     
  • 5.101, Anonymoustus (ok), 20:49, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Оно и видно, дружок, что ты не знаешь о том, что Cx 0,18 (то есть практически достижимый для автомобиля максимум) сделали диды (правда, не твои) безо всяких компьютеров на кульманах и с трубой ещё в тридцатые годы: https://en.wikipedia.org/wiki/Mercedes-Benz_T80#Technical_data

    А другие диды (Керниган и Ритчи) написали на PDP целый юникс, причём в свободное от основной работы время.

    Ну а плохому танцору, что ж поделать, всегда как не кульман, то палка-копалка мешают.

     
     
  • 6.104, Аноним (-), 22:22, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А теперь вопрос на миллион попробуй это чудо массово произвести по технологиям ... большой текст свёрнут, показать
     
  • 6.108, Ordu (ok), 22:46, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Чё Ты хоть читал статью, на которую ссылаешься Ничего эти диды не сделали, они... большой текст свёрнут, показать
     
     
  • 7.118, Аноним (-), 01:07, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А сейчас на си пишут даже фирмвари для микроконтроллеров. И даже железо порой синтезируют из субдиалектов C. Мало желающих рожать хардварный декодер какого-нибудь H.264 путем отрисовывания схемы по транзисторам, блин. Таким макаром весь Интел за 20 лет этот блок не нарисует.
     
  • 7.133, Аноним (-), 13:17, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Во-первых, про свободное от работы время -- это враньё. Томпсон работал в
    > исследовательском подразделении Bell Labs, и сверху ему был спущен заказ на
    > multics. Томпсон взял палку-копалку -- ассемблер, и запилил unix (вместо MULTiplexed
    > Informational and Computer Service, он создал UNiplexed Informational and Computer Service,
    > потому что мультиплексирования не осилил).

    Вообще-то всё было не так. Дело происходило уже после того, как Bell Labs прекратил работу над Multics. Как побочный эффект, у Кена не стало машины, где бы он мог запускать написанное в свободное время игрушку. И он, опять-таки в свободное время, написал операционку для имевшейся под рукой убогонькой (даже по тем временам) PDP-7.

     
     
  • 8.134, Ordu (ok), 13:38, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Освежил память педивикией -- да, ты прав Именно так и было Заказ был спущен св... большой текст свёрнут, показать
     
  • 7.135, black fang (?), 17:12, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Что за бред Юникс переписали на C, чтобы обеспечить портируемость ядра и софта ... большой текст свёрнут, показать
     
     
  • 8.136, Ordu (ok), 18:03, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ты думаешь, что хипстерство определяется целями человека Ты не прав, хипстерств... большой текст свёрнут, показать
     
  • 8.137, Аноним84701 (ok), 18:52, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Все течет, все меняется Насчет си врать не буду, но натыкался на списки расс... текст свёрнут, показать
     
  • 4.113, Vkni (ok), 23:58, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > PDP был на острие рокет саенса. И даже в те времена, когда никаких PDP не было
    > ещё и в замысле.

    Боюсь, PDP не был никогда на острие рокет саенса. Это же рабочая лошадка.

     
  • 2.60, Аноним (-), 02:09, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > сначала долго объясняли преимущества динамической типизации,

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

     
     
  • 3.65, Anonymoustus (ok), 03:02, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да-да, это вебмакаки написали шестой перл, третий питон, системду и Windows 10.

    Причина бед одна на всех — страстное и неуёмное [I]желание автоматизировать[/I] (всё, и особенно то, что автоматизировать не надо), а самому лениво откинуться на спинку кресла, пока тикают часы рабочего времени и на счёт капает зарплата.

    Эти же самые обезьяны, которые пишут тонны гoвнoкода, самые яростные агитаторы за приобретение «ещё одной планки памяти».

    Смотри, кому выгодно.

     
     
  • 4.71, Аноним (-), 04:21, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Машина должна работать, а человек - думать Принцип IBM Если его усвоили даже м... большой текст свёрнут, показать
     
     
  • 5.77, Anonymoustus (ok), 10:14, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Что-то (многие знания и жизненный опыт) мне подсказывает, что горе-админ, приложивший силы и мозги, чтобы разобраться в сути проблемы, и понявший свой инструмент, в дальнейшем будет применять его и другие инструменты правильно. В отличие от девопсов-шустриков и прочих эникейщиков, которые бодро зажигают Фукусимы и роняют самолеты.

    Остальную чушь не буду комментировать, ибо чушь.

     
     
  • 6.91, Аноним (-), 19:01, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А что, эникейщики уже научились цунами запускать Тогда пора строить хижину в го... большой текст свёрнут, показать
     
     
  • 7.100, Anonymoustus (ok), 20:40, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Так это утопил флотилию спутников, дитя ЕГЭ?
     
     
  • 8.106, Аноним (-), 22:30, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это дедушки которые это кодили вымерли, видимо не очень утруждая себя проектной ... текст свёрнут, показать
     
  • 5.85, Anonymoustus (ok), 15:16, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Мир, вообще-то, не ограничен вашими виртуальными представлениями о вещах, но сильно больше их, качественно и количественно. В реальной жизни почти все задачи могут быть рассчитаны без вычислительной техники вообще. Что такое полезное вы дали миру, что он должен принимать во внимание ваши желания? С нетерпением жду подробного ответа.
     
     
  • 6.92, Аноним (-), 19:28, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    А миллион мартышек с палкой-копалкой могут заменить экскаватор Мы изменили все ... большой текст свёрнут, показать
     
     
  • 7.99, Anonymoustus (ok), 20:36, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Какой гиперактивный аноним! Так что конкретно ты сделал, дружок, для всеобщего счастья? Лозунгов больше не надо, я их тебе и сам написать могу.
     
     
  • 8.107, Аноним (-), 22:37, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Я освоил CADы и научился запиливать разные интересные вещицы, на Linux и не толь... текст свёрнут, показать
     
     
  • 9.110, Анонимм (??), 23:30, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Гы Только в теории и мечтах юных нагибаторов Потому что на практике из-за стрес... большой текст свёрнут, показать
     
     
  • 10.120, Аноним (-), 01:26, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В тестах дохраналиона автомобильных изданий Но ABS это недостаточно хардкорно, ... большой текст свёрнут, показать
     
     
  • 11.129, Анонимм (??), 05:22, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Сколько экспрессии и эмоций Ух Хотите рассказать мне, насколько вкусны апельс... большой текст свёрнут, показать
     
     
  • 12.139, Аноним (-), 23:30, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда в чем проблемы Хочется потроллить Или посмотреть на мир где всякие нубы ... большой текст свёрнут, показать
     
  • 5.87, Аноним (-), 17:49, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Эти же самые обезьяны, которые пишут тонны гoвнoкода, самые яростные агитаторы за
    >> приобретение «ещё одной планки памяти».
    > Системд у меня работает на одноплатниках которые сами как планка памяти размером.
    > А вы можете сношаться с своими 486 и sysv init если
    > вам это надо.

    Казалось бы, причем тут вообще системда? Но нет, кто о чем, а сектанты все норовят о Дарах Пророка ввернуть.

     
     
  • 6.124, Аноним (-), 02:13, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Казалось бы, причем тут вообще системда?

    Об этом расскажут коллеги из фирмы Pengutronix. Которые грамотно попросили в системду несколько полезныз плюшек для нашего ремесла. ЧСХ запилили в отличие от рассказов про этанинужна. Теперь вот нормальное апи вачдога для процессов есть.

     

  • 1.4, анонимбр (?), 12:52, 22/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не понятно только на фига тогда писать на Python, если нужна статическая типизация, которая есть в языках ее поддерживающих %) Только потому что это Python:S
     
     
  • 2.7, Аноним (-), 13:26, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Парсер JSON там хороший )
     
     
  • 3.47, Аноним (-), 19:57, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так и знал, что все преимущества бидона заключаются в чём-то подобном
    .
     
  • 3.114, Vkni (ok), 23:59, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Парсер JSON там хороший )

    Ну уж этого добра везде хватает.

     
  • 2.10, Аноним (-), 14:03, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Да так же, как у мордокниги с похапе: сначала понакодили миллионы строк, потом задумались.
     
     
  • 3.34, Аноним (-), 18:18, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    так ведь инстаграмм принадлежит мордокниге %)
     
     
  • 4.48, Аноним (-), 20:48, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    То-то у меня дежавю.
     
  • 4.54, Аноним (-), 21:53, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Они его купили уже когда инстаграм был оче популярным.
     
  • 4.61, Аноним (-), 02:13, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > так ведь инстаграмм принадлежит мордокниге %)

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

     
  • 2.25, Василий Топоров (?), 17:13, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что им нужен был быстрый MVP (minimal valuable product).  На скриптовых языках его сделать легче.
     
  • 2.39, Аноним (-), 19:15, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    В условиях стартапа статические языки не рентабельны.
     
     
  • 3.50, qsdg (ok), 21:24, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В условиях стартапа статические языки не рентабельны.

    Ну я работал в стартапах и поднимал стартапы. Скорость написания одна и та же, не в синтаксисе дело. Вы же не из тех самых, кто пишут в Блокноте/VIM на Жаве/C#?

    Для стартапа язык (и остальные тулзы/фреймворки) должен быть как можно более предсказуем, чтобы по каждому вопросу было 10 ответов на stackoverflow. А ещё лучше чтобы вопроса не возникало. Это в больших компаниях можно поразбираться почему так и эдак, и подфиксить эти тулзы под себя.

     
     
  • 4.56, Аноним (-), 22:43, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > в Блокноте/VIM

    Эпичное неосиляторство.

     
  • 4.66, Anonymoustus (ok), 03:08, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > чтобы по каждому вопросу было 10 ответов на stackoverflow.

    Боже, и ведь эти люди нынче пишут системный софт и прошивки для промышленных АСУ.

    Ну и как не будут гореть Фукусимы и падать самолёты?

     
     
  • 5.72, Аноним (-), 04:24, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, блин, ты же не написал системный софт, прошивки и АСУ правильно. Пришлось другим, уж как умеют. А так на словах все вы Львы Толстые, а как до кодинга - только рассусоливать умеете.
     
     
  • 6.78, Anonymoustus (ok), 10:18, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Пусть вас такие же врачи лечат, которые «уж как умеют». Что, уже калечат^Wлечат? Пришлось уж им, что поделать. А так-то на словах все вы парацельсы, а как до лечения — только рассусоливать умеете.
     
     
  • 7.94, Аноним (-), 19:48, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Пусть вас такие же врачи лечат, которые «уж как умеют».

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

    > Что, уже калечат^Wлечат? Пришлось уж им, что поделать. А так-то на словах все
    > вы парацельсы, а как до лечения — только рассусоливать умеете.

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

     

  • 1.6, Аноним (-), 13:01, 22/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    Посмотрел на заголовок, угадал лицензию.
    Молодцы! Вторая компания за неделю, которая делится своим добром безвозмездно и под правильной лицензией.

    Давайте, рассказывайте, какие плохие проприетарщики.

     
     
  • 2.36, Тот_Самый_Анонимус (?), 18:30, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Всё таки не зря я обращаю на это внимание. Люди начинают понимать какие лицензии более свободные.
     
     
  • 3.73, Аноним (-), 04:25, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Всё таки не зря я обращаю на это внимание. Люди начинают понимать
    > какие лицензии более свободные.

    В стаде monkey послышались возбужденные голоса...

     
     
  • 4.131, Stop (?), 07:12, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ого! monkey умеют жать минус!
     

  • 1.8, Пользователь Debian (?), 13:44, 22/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Статическая типизация не нужна, говорили они.

    Динамическая типизация ускоряет и упрощает разработку, говорили они.

     
     
  • 2.24, Аноним (-), 17:01, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Так не врали же. Про поддержку rовн чужого кода никто не заикался.
     
     
  • 3.33, пох (?), 18:02, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    своего тоже. "Разработал" и забил.

    зато быстро, да.

     
  • 2.51, qsdg (ok), 21:28, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Статическая типизация не нужна, говорили они.
    > Динамическая типизация ускоряет и упрощает разработку, говорили они.

    Ага, то же самое говорили про Schemaless в база данных :)

    А по факту получилось что схема-то всё равно нужна, иначе это не данные, а мусор, но зато теперь ты будешь поддерживать эту схему сам, дружок.

     
     
  • 3.74, Аноним (-), 04:25, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ты в любом случае будешь поддерживать схему сам, ибо искуственный интеллект который заменял бы програмеров еще не придумали.
     

  • 1.9, Аноним (-), 13:51, 22/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Что только люди ни делают, лишь бы на C/C++ не писать...
     
     
  • 2.13, Аноним (-), 14:46, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Что только люди ни делают, лишь бы на C/C++ не писать...

    показывай свой код на c/c++, трепло

     
     
  • 3.15, A.Stahl (ok), 15:10, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >трепло

    Что, ты искренне считаешь, что писать код на Си могут лишь избранные и Аноним лживо себя к ним причисляет? Все могут писать код на Си. Даже ты сможешь.

     
     
  • 4.17, Филипп Филиппович (ok), 15:59, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Но не все потом смогут на этот код смотреть так, что при этом не хватил Кондратий. )))
     
     
  • 5.26, Crazy Alex (ok), 17:24, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, например, Поттеринг не может
     
  • 5.55, Аноним (-), 21:55, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Смотреть в завтрашний код смогут не только лишь все.
     
     
  • 6.88, ыы (?), 17:49, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    ...мало кто сможет это делать... (с)
     
  • 4.67, Аноним (-), 04:00, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Что, ты искренне считаешь, что писать код на Си могут лишь избранные
    > и Аноним лживо себя к ним причисляет? Все могут писать код
    > на Си. Даже ты сможешь.

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

     
  • 2.30, Vkni (ok), 17:33, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Что только люди ни делают, лишь бы на C/C++ не писать...

    Дык. Если можно не писать на C/C++, лучше не писать.

     
     
  • 3.68, Аноним (-), 04:01, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Дык. Если можно не писать на C/C++, лучше не писать.

    Специально для вас есть monkey-что-то-там. Но ощущать себя обезьяной при написании программ нравится не всем.

     
     
  • 4.111, Vkni (ok), 23:52, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Специально для вас есть monkey-что-то-там.

    Спасибо, но Питон вместо C++ - это только по большой нужде. Для меня есть ghc и hlint.

     
     
  • 5.123, Аноним (-), 02:03, 24/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Заменить плюсы питоном можно разве что при полном пофиге на скорость работы этого.
     
     
  • 6.141, Vkni (ok), 06:23, 26/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Заменить плюсы питоном можно разве что при полном пофиге на скорость работы
    > этого.

    Не в этом основная проблема - продолб по скорости там ну раз в 10. Это практически всегда лечится выбором подходящих структур данных и алгоритмов.

    А вот отсутствие компиляции реально не лечится - практически в половине обработчиков ошибок в программе на Питоне есть ошибки. Всё должно быть 100% покрыто тестами, что почти в любой задаче с ветвлениями невозможно. А аннотации - это возврат к работе с типами в стиле Алгола-Фортрана-С-Паскаля.

    В то же время, с 80-х реализован вывод типов Х-М в ЯВУ семейства ML. Всё столь же гибкое как Питон, но компилируется и проверяется в статике.

     
  • 2.58, Онаним (?), 00:11, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    C/C++ - слабо-типизированные языки, позволяющие и провоцирующие написание ненадёжного кода и постоянно играющие злые шутки с теми, кто думает, что знает и умеет их. На C/C++ практически невозможно написать программу без багов, 100% точно описывающую какую-бы то ни было формальную задачу. Тем, кому не нравится динамическая типизация и кто ищет в строгой типизации и у компилятора помощи в защите от багов наиболее логично переходить на Haskell, а никак не на C/C++.
     
     
  • 3.79, eganru (?), 11:27, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    [i]На C/C++ практически невозможно написать программу без багов[/i] - программа без багов это конечно хорошо, однако программистам обычно платят за то, чтобы решение было можно продавать.

    Я вообще уже забыл, когда у меня что-то уходило в релиз без todo и wip.
    Просто вот есть модуль, встроенное тестирование которого показывает, что в нем есть изъяны, однако при обычной нагрузке вроде работает - отлично, идем дальше - релиз близко.

    В итоге к релизу реально хорошо отлажены крупицы. остальное - как-то отлажено.


     
  • 3.109, Аноним (-), 23:03, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > практически невозможно написать программу без багов

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

     

  • 1.32, Аноним (-), 17:59, 22/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Дались вам эти аннотации в пайтоне!
    Если сомневаешься, используй assert:
    assert isinstance(myparam, (enable_type1, enable_type2)), type(my_param)
     
     
  • 2.45, Crazy Alex (ok), 19:33, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Красота, и весь код в таком...
     

  • 1.37, Аноним (-), 18:55, 22/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Интересно, в Инстаграмме тоже начали на Go мигрировать, потому выбрасывают все ненужные наработки?.....
     
  • 1.40, eganru (?), 19:23, 22/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Практически каждый проект в какой-то момент сталкивается с тем, что есть существенные ограничения со стороны инструментария, с помощью которого он двигается вперед.

    Для реализации каких-либо вещей ребята решили сделать эту утилиту к питону. Решили, что так всем будет проще.

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

    Как пишут ребята, про С и плюсы. Как про панацею. Я пишу тривиальное на С. Там тоже есть где совершить ошибки. С это не панацея.



    ...
    void snd_routine(snd_entry_t* snd)
    {
    auto void raw_ctl(void);
    auto void celt_ctl(void);

    for(;;){
    pthread_mutex_lock(&snd->mutex);
    if(unlikely(snd->com)){
    switch(snd->com){
    default:
    case SND_STOP:
    if(snd->play_cnt){
    snd->play_cnt = 0;
    snd->sft.stop(snd->be);
    snd->sft.off(snd->be);
    }
    break;
    ...



    тривиальные коды на python вроде бы выглядят проще, и, наверное, в них все-таки проще разбираться.

     
     
  • 2.75, Аноним (-), 04:30, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Идет время, проект растет И то что хорошо для мелкого проекта который накидывае... большой текст свёрнут, показать
     
     
  • 3.76, eganru (?), 10:06, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    [i]Ну там например для системных вызовов - там уж такой интерфейс, какой есть. [/i] - я когда писал себе операционную систему сделал системные вызовы вообще вот так:



    /**
    * system call
    * number after syscall is argument count
    */
    static inline __attribute__((always_inline)) u32_u32 syscall0(u8 syscall_num)
    {
    volatile register u32_u32 __attribute__((unused)) result asm ("$2");
    volatile register u32 __attribute__((unused)) bogus asm ("$3");
    __asm__ volatile ("move %0, %1\n\t\
    syscall"\
    : "+r"(result)\
    : "r"(syscall_num));
    return result;
    }



    для каждого количества аргументов по такому вызову, а потом селектор на макросе.

    [i]Пардон, в си компилятор за откровенно левые действия с типами по пальцам даст[/i] - проблемы в С обычно находятся там, где человек уже перестает ясно понимать логику работы.
    В питоне, насколько я помню, примерно там же. То есть дело вряд-ли конкретно в языке.

    понятное дело, что на С и на Питоне пишут все же в основном разные вещи.

     
     
  • 4.95, Аноним (-), 19:56, 23/12/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну, блин, твоя операционная система только тебе и нужна А в полезном на практик... большой текст свёрнут, показать
     

  • 1.46, Онаним (?), 19:38, 22/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Зачем это сейчас, когда в Python 3.6 уже есть специальная стандартная синтаксическая конструкция для указания типов и даже несложный способ заставить рантайм автоматически жёстко проверять типы в указанных местах?
     
     
  • 2.53, Аноним (-), 21:52, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Подскажите, про какой способ говорите?
     
  • 2.57, Ordu (ok), 22:58, 22/12/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Признайся, ты прочитал ведь только заголовок новости, так?
     

  • 1.62, Anonymoustus (ok), 02:44, 23/12/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Какой глубокий символизм в названии.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру