The OpenNET Project / Index page

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

Сравнение эффективности разработки интерфейсов с использованием QML и EFL

20.03.2013 13:19

Опубликованы результаты довольно обстоятельного сравнения особенностей разработки приложений с графическим интерфейсом пользователя при использовании Qt QML и EFL (Enlightenment Foundation Library). Сравнение охватывает такие вопросы, как удобство разработки, оценка трудозатрат, компактность кода, потребление памяти в процессе работы, скорость запуска, производительность итоговых приложений, визуальная привлекательность и т.п. Для оценки использовался клон игры Сапёр, написанный с использованием QML и EFL.

При использовании EFL и языка Си потребовалось написать примерно в два раза больше кода, чем при использовании QML/JavaScript (1487 и 668 строк кода). QML/JavaScript отмечен как более высокоуровневое средство разработки, позволяющее создавать программы быстрее, чем при использовании языка Си. По возможностям Qt также заметно опережает EFL. При этом различия в производительности и потреблении ресурсов оказались не такими заметными как можно было предположить.

С позиции потребления памяти на 32-разрядной системе RSS приложения на EFL составил 15.8 Мб, а QML - 27.6 Мб, но при этом для EFL размер совместно используемых блоков составил 2.6 Мб, а для QML - 15.3 Мб. PSS для QML составил 27.5 Мб, а для EFL - 15.8. В 64-разрядной конфигурации потребление памяти QML оказалось на несколько мегабайт ниже, чем EFL (PSS 18.6 и 20.7 Мб). При запуске одновременно 5 и 10 копий приложения различия в 32-разрядной конфигурации сгладились за счёт более активного совместного использования памяти в QML.

Время запуска для приложений на EFL оказалось меньше, примерно на 30%.



  1. Главная ссылка к новости (http://tolszak-dev.blogspot.ru...)
  2. OpenNews: Стабильный релиз EFL 1.7 (Enlightenment Foundation Library)
Лицензия: CC-BY
Тип: английский / Обобщение
Короткая ссылка: https://opennet.ru/36446-qml
Ключевые слова: qml, qt, efl, gui
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (124) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 13:53, 20/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > QML/JavaScript отмечен как более высокоуровневое средство разработки,

    Которое в большой программе потом икнется тем что JS создал на автомате некую переменную и прога через полчаса счета встала колом из-за трудноуловимого бага. Тогда как си за такое сразу послал бы на и был бы прав. А так то да, пока программа на 600 или 1400 строчек - в трех соснах фиг заблудишься.

     
     
  • 2.2, Аноним (-), 13:59, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +7 +/
    >А так то да, пока программа на 600 или 1400 строчек - в трех соснах фиг заблудишься.

    Вам таки нужно больше для создания интерфейса?

     
     
  • 3.3, Аноним (-), 14:11, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Есть же люди, которые логику приложению реализуют прямо в коде для работы с GUI, а потом месразбираются что они понавоязи.
     
     
  • 4.13, Аноним (-), 14:37, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Это не шуточная проблема, у нас примерно такое и есть, особенно нереально тяжело это  рефакторить. Нужен очень жесткий контроль по использованию js что бы не писали на нем слишком много. а так QML ниче, мне нравится.
     
     
  • 5.16, Пиу (?), 14:55, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Это не шуточная проблема, у нас примерно такое и есть, особенно нереально
    > тяжело это  рефакторить. Нужен очень жесткий контроль по использованию js
    > что бы не писали на нем слишком много. а так QML
    > ниче, мне нравится.

    я смотрю на все эти FirefoxOS, Tizen и прочие, и понимаю, что никакого контроля не получиться

     
     
  • 6.17, Аноним (-), 14:58, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Я не понимаю как на этом можно сделать что-то сложнее калькулятора.
     
     
  • 7.24, Anonim (??), 15:34, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >Я не понимаю как на этом можно сделать что-то сложнее калькулятора.

    Вот тут http://www.youtube.com/watch?v=kvWeE3kurEQ люди делятся опытом

     
  • 5.43, Аноним (-), 16:49, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Это не проблема js, это проблема людей.
    Чем более высокоуровневый язык - тем легче на нем быдлокодить, откладывая решение проблем с качеством кода на потом.

    Многие еще не могут понять сам js, что его парадигма сильно отличается от других ОO-языков, и шпарят на нем так, как они привыкли писать на C++.

    И GUI тут тоже ни при чем. На js уже давно можно решать задачи, отвязанные от GUI, и рефакторится он прекрасно. Другое дело, что пока в node.js юные хацкеры сильно косячат, создавая о js неправильное представление. Лучше стандарты CommonJS для начала почитать, прежде чем делать выводы.

    Другое дело еще, что сама Qt сильно на GUI завязана, что тоже в свою очередь создает неравильноt впечатление о js.

     
     
  • 6.81, Аноним (-), 23:28, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это, конечно, проблема людей, но у компиляторов да еще с статической типизацией ... большой текст свёрнут, показать
     
     
  • 7.86, arisu (ok), 23:43, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Если кто си++ нормально освоил — JS ему вообще будет на один зубок, имхо.

    только вот зуб сломается. большинство ломается на стадии прототипной объектной модели. ещё некоторые — на стадии замыканий. до финиша редкий кактус долетает.

    вообще-то «на один зубок» будет тому, кто знает Scheme (но будет ругаться матом за корявость).

     
     
  • 8.124, mma (?), 15:35, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    тут как бы цель не оправдывает средства, это как в слона дробиной, посмотришь на... текст свёрнут, показать
     
     
  • 9.126, arisu (ok), 17:43, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вот-вот 171 зачем мне лопата, мне копать надо 187 зато незнание не мешает ... текст свёрнут, показать
     
  • 9.127, arisu (ok), 17:45, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    p s прототипная модель и замыкания, кстати, используются не только в js даже в... текст свёрнут, показать
     
  • 7.102, angra (ok), 03:03, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Судя понаписанному, js вы так и не смогли осилить, как в общем-то и C++. Проверка синтаксиса в js есть на стадии "компиляции", проверка типов в основном в рантайме, но я не сказал бы что это сильно усложняет отлов ошибок. А в С++ можно перегружать функции, что замечательно херит преимущества статической типизации, увеличивает вероятность возникновения и затрудняет поиск ошибок.

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

     
     
  • 8.103, arisu (ok), 03:06, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    это да поскольку они знают только о молотке, то любым инструментом пытаются пол... текст свёрнут, показать
     
  • 8.121, TbIK (ok), 13:41, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В защиту си сипиписников коим я был лет 20 назад , скажу зато эти люди никогда... текст свёрнут, показать
     
     
  • 9.128, arisu (ok), 17:47, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    i lol d hardly ... текст свёрнут, показать
     
  • 7.112, jOKer (ok), 07:51, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Освойте для себя сервис-ориентированные архитектуры, разместите бизнес-логику на... большой текст свёрнут, показать
     
     
  • 8.113, arisu (ok), 08:03, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    проблемы бананасов сводятся почти к нулю простым линтером написать который для ... текст свёрнут, показать
     
  • 3.9, Пиу (?), 14:25, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    проблема в том, что орава жабопогромистов ничего более не умеет, но хочет жрат
     
     
  • 4.18, Xasd (ok), 15:02, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    проблема в том что C C -программисты настолько умные, и настолько много всего д... большой текст свёрнут, показать
     
     
  • 5.23, Пиу (?), 15:28, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    а программисты на жаваскрипте структуру программы в голове не держат х к-х к ... большой текст свёрнут, показать
     
     
  • 6.31, тоже Аноним (ok), 16:05, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Между прочим, этот господин довольно точно описал логику "Я нажала пять раз не потому, что мне нужно было пять раз, а для убедительности!".
    Настоящий юзер-френдли интерфейс, безусловно, должен понимать такие очевидные вещи.
    Жаль, что использование тех или иных технологий само по себе таким знанием интерфейс не обогатит.
     
     
  • 7.37, Пиу (?), 16:27, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >Между прочим, этот господин довольно точно описал логику "Я нажала пять раз не потому, что мне нужно было пять раз, а для убедительности!".

    проблема в том, что интерфейс в результате должен обладать телепатией, чтобы отличить случаи "нужно было 5 раз" и "нужно было 1 раз, но .."
    алсо, лично я считаю интерфейс который такое позволяет вредным. он создает армию тупых людей

     
     
  • 8.41, mr. green thumb (?), 16:46, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    вариант 171 заклинило клавишу 187 никогда не происходил у умных людей снима... текст свёрнут, показать
     
     
  • 9.44, Пиу (?), 16:50, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    это проблема программы программа должна учитывать, что у пользователя заклинило... текст свёрнут, показать
     
  • 9.48, Аноним (-), 17:00, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    с какой вероятностью клавишу заклинит у умного человека, и с какой вероятностью ... текст свёрнут, показать
     
  • 9.52, qqq (??), 17:25, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Даже если действительно заклинило клавишу, эту проблему должна разруливать ОС а ... текст свёрнут, показать
     
     
  • 10.75, Vkni (ok), 22:48, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Вы не поверите, но это должен разруливать человек, только он может поменять клав... текст свёрнут, показать
     
  • 9.65, arisu (ok), 20:54, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    а ещё есть вариант 171 половина клавиатуры не работает ваша программа говно, ... текст свёрнут, показать
     
  • 9.83, Аноним (-), 23:34, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, да чтоб у тебя ресет заклинил Чини это потом программно, флаг в руки ... текст свёрнут, показать
     
     
  • 10.117, Аноним (-), 13:06, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Демагогия ... текст свёрнут, показать
     
     
  • 11.129, arisu (ok), 17:48, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    причём началась она с поста 171 а если клаву заклинит 187 ... текст свёрнут, показать
     
  • 3.57, Аноним (-), 18:42, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Вам таки нужно больше для создания интерфейса?

    А это сильно зависит от интерфейса. Если это интерфейс для дебильника или автомата оплаты, с тремя кнопками - оно конечно. А вот интерфейс например офисного пакета, кад-образного софта, пакетов 3D моделирования, графических редакторов или там еще чего посложнее hello world-а - бывают и достаточно нетривиальными.

     
     
  • 4.101, Led (ok), 02:57, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> Вам таки нужно больше для создания интерфейса?
    > А это сильно зависит от интерфейса. Если это интерфейс для дебильника или
    > автомата оплаты, с тремя кнопками - оно конечно. А вот интерфейс
    > например офисного пакета, кад-образного софта, пакетов 3D моделирования, графических
    > редакторов или там еще чего посложнее hello world-а - бывают и
    > достаточно нетривиальными.

    Например, XUL?

     
     
  • 5.104, arisu (ok), 03:07, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Например, XUL?

    или так, да — дебильными.

     
  • 3.122, Аноним (-), 14:30, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >Вам таки нужно больше для создания интерфейса?

    А кто сказал, что JS только  для интерфейса?

     
  • 2.5, Ы (?), 14:17, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –4 +/
    невежественные домыслы, ВОЗМОЖНОСТЬ динамической типизации это плюс языка
     
     
  • 3.11, Пиу (?), 14:29, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > невежественные домыслы, ВОЗМОЖНОСТЬ динамической типизации это плюс языка

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

     
     
  • 4.12, Ы (?), 14:35, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    угу для этого её и придумали, давайте приводить ещё возможности накосячить
     
  • 4.14, Xasd (ok), 14:39, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    тоесть например функция требует объект Кнопка , а мы передадим туда объект Вр... большой текст свёрнут, показать
     
     
  • 5.15, Пиу (?), 14:53, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >тоесть например функция требует объект <Кнопка> , а мы передадим туда объект <Временная_Константа>? и как же это может произойти на практике? :-) ..

    функция требует два аргумента, их тип не задан, это же динамическая типизация

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

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

     
     
  • 6.19, Xasd (ok), 15:11, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > у большинства функций разнородные аргументы вообще-то

    типа как:
        объект, число, число, число
    или , например
        объект, число, число
    ???

    по моему это не совсем разнородные :-)

    редкий случай когда напимер 3 аргумента и все разнородные

     
     
  • 7.22, Пиу (?), 15:19, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> у большинства функций разнородные аргументы вообще-то
    > типа как:
    >     объект, число, число, число
    > или , например
    >     объект, число, число
    > ???

    еще раз, не везде аргументы функции состоят из наборов чисел. более того, функции у которых на входе много числовых аргументов - плохие функции (в качестве API)

    >редкий случай когда напимер 3 аргумента и все разнородные

    далеко не редкий

     
     
  • 8.39, souryogurt (ok), 16:34, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Почему ... текст свёрнут, показать
     
     
  • 9.42, Пиу (?), 16:47, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    потому что их легко перепутать ... текст свёрнут, показать
     
  • 7.72, VoDA (ok), 22:37, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> у большинства функций разнородные аргументы вообще-то
    > типа как:
    >     объект, число, число, число
    > или , например
    >     объект, число, число
    > ???
    > по моему это не совсем разнородные :-)

    Чаще объект, объект, объект. Внутри, конечно, будут числа, но не всегда первым уровнем.

    PS еще и список объектов в функцию можно передавать. А уж замыкание так это вообще легко ;)

     
  • 5.66, arisu (ok), 20:58, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > от перепутанных местами параметров — статическая типизация тоже (как и динамическая) не
    > защищает кстате..

    а вот в Smalltalk это решили очень изящно. и без проверки типов.

     
  • 5.73, VoDA (ok), 22:43, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У меня в практике были косяки типа кодил-кодил - все работало Зашел на соседний... большой текст свёрнут, показать
     
     
  • 6.76, arisu (ok), 22:49, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    тут дело-то в том, что js никогда и не задумывался как язык для разработки большого софта. а теперь его обвешивают костылями и пихают невпихуемое.
     
     
  • 7.118, Аноним (-), 13:07, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > тут дело-то в том, что js никогда и не задумывался как язык
    > для разработки большого софта. а теперь его обвешивают костылями и пихают
    > невпих/емое.

    Ничего не напоминает?

     
     
  • 8.125, arisu (ok), 17:41, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    много всякого напоминает но беседа-то у нас про js ... текст свёрнут, показать
     
  • 5.82, piteri (ok), 23:29, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >и как же это может произойти на практике?

    Легко
    >будет сразу заметен в течении 5 минут работы программы.

    После установки заказчику.

     
  • 4.114, jOKer (ok), 08:07, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> невежественные домыслы, ВОЗМОЖНОСТЬ динамической типизации это плюс языка
    > динамическая типизация - это отличный способ выстрелить себе в ногу или словить
    > "отличный" стектрейс где-то из глубин библиотечного кода, просто потому что интерфейс
    > строго не задан

    Давайте все-таки не путать динамическую/статическую типизацию и строгую/мягкую типизацию. Внезапно: есть ЯП в которых реализована строгая динамическая типизация. И в этих ЯП автоматического приведения к типу нет, а вот замыкания, инжекция кода и прочие вкусняшки, - напротив, имеются.

    ЗЫ. А "борцам" с динамической типизацией из-за того, что у них автоматически привелись типы, а они это прощелкали, надо выстрелить не в ногу, а в голову - все равно она им не к чему.

     
     
  • 5.115, arisu (ok), 08:14, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    отчасти-то он прав. потому что новоявленые МегаГуру про контракты, может, и слышали, но в виду отсутствия мозга ничего не поняли. соответственно, хвалёные библиотеки часто вместо контрактов светят половым гениталием. это ж «тормозит» и вообще «лишний код».

    с другой стороны — за отсутствие булевого типа и использование «+» для соединения строк таки надо было бы лишить обеда. и ужина.

     
  • 3.49, Аноним (-), 17:10, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А в каких языках динамическая типизация НЕ ВОЗМОЖНА?
     
     
  • 4.55, exist (ok), 18:15, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Видимо, в языках со строгой типизацией. Например, Ada.
     
     
  • 5.116, Аноним (-), 12:12, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Мягкое и теплое, ага. В Python динамическая строгая типизация.
     
     
  • 6.130, arisu (ok), 17:56, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Мягкое и теплое, ага. В Python динамическая строгая типизация.

    хорошая шутка.

     
     
  • 7.134, Аноним (-), 14:12, 22/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Плохой юмор.Кто-то (не будем показывать пальцем) путает статическую и строгую типизацию.

    http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80

    $python
    >>> a = '2'
    >>> b = a + 2

    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    TypeError: cannot concatenate 'str' and 'int' objects
    >>>

     
     
  • 8.136, arisu (ok), 16:13, 22/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    a 171 fuck 187 a 40 print a 2 опа это 8212 не строгая типизация ... текст свёрнут, показать
     
  • 3.58, Аноним (-), 18:43, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > ВОЗМОЖНОСТЬ динамической типизации это плюс языка

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

     
     
  • 4.135, Аноним (-), 14:32, 22/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> ВОЗМОЖНОСТЬ динамической типизации это плюс языка
    > Только если ее делать не через опу. Т.е. с возможностью форсануть статическую
    > для уменьшения грабель. А тут мало того что типизация динамическая, так
    > еще и несуществующие переменные без предупреждения и явного анонсирования такой хотелки
    > кейвордом создадут. А вот это уже западлостроительство - мало-мальски крупный проект
    > потом замахаешься дебажить в поисках опечатки.

    Приведите пример крупного проекта по созданию интерфеса программы.

     
  • 2.7, Xasd (ok), 14:20, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > JS создал на автомате...

    как это он создал на автомате? кто ему разрешил самодеятельность? или мы рассматриваем случай когда программист забыл добавить 'use strict' в начало файла?

     
  • 2.10, Xasd (ok), 14:25, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > ...си за такое сразу послал бы...

    анализатор статической типизпции -- не сделает за программиста его работу.

    если ты написал (по ошибке)

    memset(my_obj_ptr, 0, sizeof(my_obj_ptr));
    вместо
    memset(my_obj_ptr, 0, sizeof(*my_obj_ptr));

    то компилятор тебя не пошлёт (и темболее "сразу").

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

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

     
     
  • 3.50, qux (ok), 17:18, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > иногда у меня вообще такое ощущение что некоторые Си-программисты страдают рассеянным вниманием из-за того что думают будто компилятор находит все их ошибки.

    Некоторые не знаю, а в общем, как и все прочие, страдают забиванием. Сравнить, например, кол-во полезных подсказок, выдаваемых gcc на не-helloworld по дефолту и с -Wall -Wextra (-pedantic --std=c99 -Werror). А потом кол-во проектов, которые ближе ко второму. Особенно коммерческих.

     
  • 3.61, Алексей Морозов (ok), 18:52, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > memset(my_obj_ptr, 0, sizeof(my_obj_ptr));

    Ну, вот конкретно такое достаточно хорошо ловится юниттестами, запущенными под валгриндом

     
  • 3.74, Vkni (ok), 22:46, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > анализатор статической типизпции -- не сделает за программиста его работу.

    Не сделает ВСЮ работу. Но часть сделает. Поэтому несколько глупо использовать интерпретатор и динамическое типизирование.

     
     
  • 4.78, arisu (ok), 22:51, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> анализатор статической типизпции — не сделает за программиста его работу.
    > Не сделает ВСЮ работу. Но часть сделает. Поэтому несколько глупо использовать интерпретатор
    > и динамическое типизирование.

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

     
     
  • 5.90, Vkni (ok), 00:02, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > не соглашусь. другое дело, что в js нет встроеного механизма указать типы,
    > если надо. зато есть идиотия с использованием одного и того же
    > оператора для сложения строк и чисел.

    Сравни OCaml и JS: в первом система статических типов, вывод типов методом ХМ (т.е. указывать тип можно, но не обязательно - он будет выведен), именованные параметры, значения параметров по-умолчанию. Единственная фигня - операторы для вещественных чисел /., *., +. и -., хотя никто не мешал перегрузить. Это, впрочем, исправлено в F#.

     
     
  • 6.92, arisu (ok), 00:16, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    я окамла не знаю, увы ну, так 8212 на уровне 171 о окамл я не испуган, н... большой текст свёрнут, показать
     
     
  • 7.93, Vkni (ok), 00:32, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > я окамла не знаю, увы. ну, так — на уровне «о! окамл!
    > я не испуган, но озадачен.»

    Посмотри, не пожалеешь - штука маленькая, быстрая и очень удобная. Учебник по OCaml - http://caml.inria.fr/pub/docs/oreilly-book/ (где-то есть перевод на русский). Сочетает императивщину и функциональщину. И его идеи - более-менее передний край CS, как говорят специалисты, в 90-е научное развитие языковых средств остановилось (а индустрия это постепенно подсасывает).

    После этого будет тяжко смотреть на С++ с его шаблонами и смешно на тутошние языковые споры.

    > беда js в том, что никто изначально не предполагал масштабов бедствия.

    Есть ещё чудесный PHP. :-)

     
     
  • 8.94, arisu (ok), 00:49, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    да я знаю это 8212 теоретически а на практике как-то всё лениво, каждый раз ... большой текст свёрнут, показать
     
  • 7.95, Crazy Alex (ok), 01:11, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    В экшнскрипт не плюсовую, а жабью модель притищали, причем почти один к одному.
     
     
  • 8.96, arisu (ok), 01:14, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    да у них у всех ноги из одного места растут ... текст свёрнут, показать
     
  • 3.77, Аноним (-), 22:50, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > если ты написал (по ошибке)
    > memset(my_obj_ptr, 0, sizeof(my_obj_ptr));
    > вместо
    > memset(my_obj_ptr, 0, sizeof(*my_obj_ptr));

    Во-первых, где здесь статическая типизация? Перепутана константа. Во-вторых, некоторые компиляторы выдают warning при компиляции такого (в gcc, вроде, было).

     
  • 3.91, Vkni (ok), 00:05, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > иногда у меня вообще такое ощущение что некоторые Си-программисты страдают рассеянным вниманием
    > из-за того что думают будто компилятор находит все их ошибки.

    С момента изобретения С прошло уже 40 лет, пора бы и на другие языки посмотреть. В частности, на ML/Haskell и подобные - там значительно более серьёзная система типов, нежели в С. И результаты работы анализатора типов, разумеется, тоже более серьёзные.

    Он тоже не найдёт все ошибки, но результат явно будет лучше, чем в С, где можно поменять в memset 2 последних параметра местами и это пройдёт.

     
     
  • 4.97, Crazy Alex (ok), 01:18, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ну тогда уже D порекламирую, благо он нынче вполне приятен. И вывод типов есть, и если надо в кишки залесть - пишешь unsafe и понеслось. А уж ranges - совершенно чудесная штука, которую никто, кажется, больше не сделал. И не заставляет ломать мозг функицональщиной вида "ехал лямбда через рекурсию монадой погоняя". При этом при надобности есть и иммутабельность, и алгебраические типы, и pure-функции, и карринг, и много других страшных слов :-)
     
     
  • 5.99, arisu (ok), 01:35, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    не хватает только стандарта и нескольких компиляторов. кагбэ D1 уже нет, а D2 ещё толком нет. и нераспространено. но в остальном — надеюсь, что он в конце концов вытолкает цпп на обочину истории и легаси-кода.
     
     
  • 6.131, TbIK (ok), 19:03, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > не хватает только ....

    Немного не так: кто ХОЧЕТ писать - тому всего хватает. Кто не хочет - тому ВЕЧНО чего-то нехватает, "мешается в танце" и т.п.

    > D2 ещё толком нет.

    Есть. Работающий компилятор, бери, да пользуйся!

    > и нераспространено.

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

     
     
  • 7.132, arisu (ok), 19:25, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    если ты пишешь себе приветмиры 8212 то не вопрос, хоть для кнутовой шестибито... большой текст свёрнут, показать
     
  • 7.133, arisu (ok), 19:27, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    p.s. вообще, *лично для меня* язык подобного плана стоит более-менее серьёзно рассматривать тогда, когда в стандартном наборе gcc появится компилятор для этого языка.
     
  • 4.105, Led (ok), 03:10, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> иногда у меня вообще такое ощущение что некоторые Си-программисты страдают рассеянным вниманием
    >> из-за того что думают будто компилятор находит все их ошибки.
    > С момента изобретения С прошло уже 40 лет, пора бы и на
    > другие языки посмотреть. В частности, на ML/Haskell и подобные - там
    > значительно более серьёзная система типов, нежели в С.

    А разве в C есть что-то кроме char, int и float? Других типов нет - только "модификаторы" для указанных. Назвать это "системой типов"... мягко говоря, смешно.

     
     
  • 5.106, arisu (ok), 03:13, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > А разве в C есть что-то кроме char, int и float?

    да. man typedef. структуры тоже отдельные типы. ranged-типов нет, правда. так что не надо уж совсем старичка унижать, он местами ещё вполне ничего.

     
     
  • 6.107, Led (ok), 03:21, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >> А разве в C есть что-то кроме char, int и float?
    > да. man typedef. структуры тоже отдельные типы. ranged-типов нет, правда. так что
    > не надо уж совсем старичка унижать, он местами ещё вполне ничего.

    Никто его и не унижает. Но и превозносить его как божественное откровение и идеал - не стОит.

     
     
  • 7.108, arisu (ok), 03:31, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Никто его и не унижает. Но и превозносить его как божественное откровение
    > и идеал — не стОит.

    но в нише «переносимый макроассемблер» у него таки конкурентов нет.

     
     
  • 8.109, Vkni (ok), 04:45, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще, можно было бы и улучшить косметически - сделать вывод типов, убрать неяв... текст свёрнут, показать
     
     
  • 9.110, arisu (ok), 06:05, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    нененене, не надо а то мне будет скучно на нём писать - ... текст свёрнут, показать
     
  • 8.111, Led (ok), 06:58, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Нет К сожалению ... текст свёрнут, показать
     
  • 2.25, Аноним (-), 15:38, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Которое в большой программе потом икнется тем что JS создал на автомате некую переменную и прога через полчаса счета встала колом из-за трудноуловимого бага.

    Так разделите же дрозофил и котлеты. Т.е. гуй на QML, а счёт... да хоть на Фортране!

     
     
  • 3.51, qux (ok), 17:19, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда уже гуй на вебе, портабельности ради.
     
  • 3.59, Аноним (-), 18:44, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Так разделите же дрозофил и котлеты. Т.е. гуй на QML, а счёт...

    А чем глюки в гуе лучше глюков в счете?

     
     
  • 4.62, qux (ok), 19:11, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Очевидно, при глюках в гуе иногда можно взять другой, или CLI-вариант, над которым был гуй.
     
  • 2.33, ВовкаОсиист (ok), 16:10, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вы правы, но под qml обычно понимают декларативный интерфейс(который для десктопов и в пупок не упёрся, xml-ные формошлёпки куда приятней), а не всю программу на js. Хотя всем наплевать, все побежали быстро все переписывать на js, qml-же!
     
     
  • 3.140, Аноним (-), 19:59, 22/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Вы правы, но под qml обычно понимают декларативный интерфейс(который для десктопов и
    > в пупок не упёрся, xml-ные формошлёпки куда приятней), а не всю
    > программу на js. Хотя всем наплевать, все побежали быстро все переписывать
    > на js, qml-же!

    Ну и как на xml подстветить неправильно заполенные поля при вводе?

     
     
  • 4.141, arisu (ok), 20:19, 22/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну и как на xml подстветить неправильно заполенные поля при вводе?

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

     
  • 2.53, CR (?), 17:28, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > через полчаса счета

    Какого еще "счета"?

    QML/JavaScript предназначены для создания GUI. "Счет" пиштеся как обычно - на C/C++.

     

  • 1.4, Xasd (ok), 14:16, 20/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Сравнение охватывает такие вопросы, как удобство разработки, оценка трудозатрат, компактность кода, потребление памяти в процессе работы, скоросоть запуска, производительность итоговых приложений, визуальная привлекательность и т.п. Для оценки использовался Капитан Очевидность

    fixed :)

     
  • 1.6, Аноним (-), 14:17, 20/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    А почему QML, а не чистый Qt?
     
     
  • 2.8, Anonymus.UA (?), 14:25, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Действительно а почему не чистый Си или машинный код?! Загадка какая-то прям...
     
     
  • 3.63, anonymous (??), 19:54, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    >Действительно а почему не чистый Си или машинный код?! Загадка какая-то прям...

    Где ты увидел в Qt чистый си? Развелось тут неучей, понимаешь.

     

  • 1.21, Mihail Zenkov (ok), 15:19, 20/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Их саперы занимают памяти больше, чем ядро :(
     
     
  • 2.60, Аноним (-), 18:46, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Их саперы занимают памяти больше, чем ядро :(

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

     

  • 1.34, ВовкаОсиист (ok), 16:15, 20/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я правильно понимаю, что они сравнили императивный стиль программирования с декларативным? Или JS с Си? Тогда реквестирую сравнение Qt-C++ vs QML+js.
     
     
     
    Часть нити удалена модератором

  • 3.47, mr. green thumb (?), 16:53, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    подскажи, а студентам-полотёрам-мс категорически запрещается писать опенсорс или можно в свободное время?


     
     
  • 4.54, Michael Shigorin (ok), 18:00, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > подскажи, а студентам-полотёрам-мс категорически запрещается писать опенсорс

    Похоже, им категорически запрещается думать, поэтому и обсуждать с ними обычно нечего...

     
     
  • 5.120, Аноним (-), 13:11, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> подскажи, а студентам-полотёрам-мс категорически запрещается писать опенсорс
    > Похоже, им категорически запрещается думать, поэтому и обсуждать с ними обычно нечего...

    Шигорин, ну ты-то завязывай уподобляться своей пастве! Позорище....

     
     
  • 6.123, Michael Shigorin (ok), 15:15, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>> подскажи, а студентам-полотёрам-мс категорически запрещается писать опенсорс
    >> Похоже, им категорически запрещается думать, поэтому и обсуждать с ними обычно нечего...
    > Шигорин, ну ты-то завязывай уподобляться своей пастве! Позорище....

    Паства тут ни при чём, поскольку вопрос технический, а не духовный (и я сам паства).  А с коллегами тут единодушен -- вещатели "правды", в том числе Вы лично, и тем более дешёвой рекламы MS -- здесь невостребованы вместе со своим (если вообще своим) мнением.  Научитесь _слышать_, а не только вещать -- приходите.

    Сколько раз это надо повторить, чтобы дошло?

    PS: слово "правда" забрано в кавычки потому, что выставляете как правду либо неправду, либо смесь правды с ложью; либо недоговариваете.

     

  • 1.56, Аноним (-), 18:40, 20/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >>При этом различия в производительности и потреблении ресурсов оказались не такими заметными как можно было предположить.

    А вес фрэймворка интересно сравним?

     
  • 1.64, arisu (ok), 20:48, 20/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    очень ценное сравнение от человека, который:
    «Please note these are only my guesses — guesses of developer neither much experienced in plain C nor in EFL.»

    в принципе, дальше и разбирать неинтересно.

     
     
  • 2.67, skybon (ok), 21:19, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Бенчмарк может произвести и непрограммист.

    Ну а то, что на QML писать легче чем на EFL\GTK+\Motif\нужное подчеркнуть - факт.

     
     
  • 3.68, arisu (ok), 21:31, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Бенчмарк может произвести и непрограммист.

    ага. а домоходяйка — управлять государством.

    > Ну а то, что на QML писать легче чем на EFL\GTK+\Motif\нужное подчеркнуть
    > — факт.

    это не факт, это теория. то, что яростные обличители и находители простоты не знают, как работает Edje и Embryo, и как создаются интерфейсы в EFL — даже не удивительно. удивительно было бы, если бы знали.

     
     
  • 4.69, Аноним (-), 22:01, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    офтоп

    > ага. а домоходяйка — управлять государством.

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

    а по теме - сравнивать довольно небольшой набор C библиотек и огромный плюснутый qt/qml - бред. еще больший бред кодить интерфейсы на C. Гр. интерфейс по своей природе декларативен. и стараться писать его в 21 веке надо в чём угодно, только не в императивных языках.

     
     
  • 5.71, arisu (ok), 22:23, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Видимо удобно.

    ну, гейтсу же приписывают высказывание про 640 кб. пусть и ленин пострадает.

    > а по теме — сравнивать довольно небольшой набор C библиотек и огромный
    > плюснутый qt/qml — бред.

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

    > еще больший бред кодить интерфейсы на C.

    именно поэтому в EFL так делают только любители Elementary. для Edje морда делается на Embryo и описывается местами похоже на qml. там внутри почти pawn есть, специально для всяких нестандартных переходов и анимашек. но можно и без него, получается всё равно симпатично. конечно, морду можно заменять, вплоть до вообще переделать.

    > Гр. интерфейс по своей природе декларативен.

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

     
  • 5.79, Аноним. (?), 22:58, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Будьде добры, не выдирайте цитату с кровью, иначе Ленин вас покусаетъ. Он говорил "Каждая кухарка может управлять государством, если её научить." Почему-то большинство забывает конец фразы. Видимо удобно.

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

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

    «Удержат ли большевики государственную власть?» 1917.

     
     
  • 6.80, arisu (ok), 23:26, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ну, *по сути* он правильно сказал. разве что не надо было заявлять это как цитату.
     
     
  • 7.88, Vkni (ok), 23:52, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > ну, *по сути* он правильно сказал. разве что не надо было заявлять
    > это как цитату.

    Нет. *По сути*, анонимус переврал, как и ты (кстати, слегка отредактировал и последний аноним :-). У ВИЛ утверждается не то, что КАЖДАЯ кухарка может, а что НЕ ТОЛЬКО богатые чиновники могут. Т.е. среди людей, не являющихся богатыми чиновниками есть люди, способные управлять государством. Совершенно не обязательно, что эти люди - кухарки или чернорабочие.

    Т.е. из цитаты ВИЛ вообще не следует даже, что "хоть одну кухарку можно научить управлять государством", не говоря уж о "КАЖДОЙ кухарке". :-)

     
     
  • 8.89, arisu (ok), 00:00, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    хм да, признаю, ступил пардон ... текст свёрнут, показать
     
  • 3.85, Аноним (-), 23:43, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну а то, что на QML писать легче чем на EFL\GTK+\Motif\нужное подчеркнуть - факт.

    Поэтому низкокачественного и глючного быдлокода будет больше.

     

  • 1.70, Аноним (-), 22:11, 20/03/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Про отладку ни слова. Это здорово. Можно за пять минут написать на qml и день отлавливать баги. А можно день писать код и 5 минут потратить на отладку.  Имхо, я люблю писать код, а не заниматься тестированием. Кстати про профилирование, тестирование (любое) тоже ни слова. Ни средствами IDE,  ни самописными скриптами. Ждем продолжения.
     
     
  • 2.84, piteri (ok), 23:42, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Про отладку ни слова. Это здорово. Можно за пять минут написать на
    > qml и день отлавливать баги. А можно день писать код и
    > 5 минут потратить на отладку.  Имхо, я люблю писать код,
    > а не заниматься тестированием. Кстати про профилирование, тестирование (любое) тоже ни
    > слова. Ни средствами IDE,  ни самописными скриптами. Ждем продолжения.

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

     
     
  • 3.87, Аноним (-), 23:44, 20/03/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Если думать когда пишешь код, то можно за пять минут написать код
    > и пять минут потратить на отладку. Отладка - крайнее средство когда логи бесполезны.

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

     
  • 3.98, Crazy Alex (ok), 01:23, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А с логами - это уже не отладка, по вашему? Только если пошагово в дебаггере прыгать? Впрочем, отладку гуя по логам - это, конечно, "гениальное" предложение.
     
     
  • 4.100, arisu (ok), 01:40, 21/03/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Впрочем, отладку гуя по логам — это, конечно, «гениальное» предложение.

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

     

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



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

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