| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Религиозные войны > Python vs .NET |
| Автор: nerezus 19.5.2008, 17:40 |
| Python vs .NET Иногдаприходится делать выбор, так как не хватает времени на два предмета и надо выбрать один. Вы уже догадались, какие. Пишу для себя, чтобы сравнить. Но многим тоже понадобится. И выбор этот касается только меня. Некоторые пункты - тоже субъективно. 1) Возможности С одной стороны питон может все то, что может дотнет. С другой стороны в дотнете нету многово, что есть в питоне: Нет нормальной кроссплатформенности(mono не предлагать, ). Нет нормальных средств функционального программирования. 2) Простота использования. Для питона нет качественной IDE уровня VS. Есть конечно PyDev для eclipse, но из-за особенностей питона вроде duck-типизации нет нормального автодополнения. 3) Применение в разработке графических программ. Сложнее в питоне делать графические приложения. Но мне использовать PyQt не очень удобно. А в дотнете с этим все прекрасно. В питоне нет мейнстрима - считаю, что это очень плохо. Есть куча библиотек типа Tkinter, wx, PyGTK, PyQt - и у всх ВСЕ по разному. 4) Применение в разработке скриптов и сетевых приложений. Питон лидер. Просто лидер и никакой дотнет рядом не валялся. Написать многопоточный сканер? Пожалуйста, десять строк. Написать вебсервер? Пять строк. Кстати этот пункт я ценю выше всего. 5) Применение при разработке вебприложений. Тут не могу сравнить. Обе вещи ОЧЕНЬ сильны. Сравнивать придется Django с одной стороны(кто хочет - берет Turbogears) и ASP.NET с другой. Мне гораздо приятнее идея и стиль разработки Django, но это лишь мое личное мнение и я не буду его аргументировать - выбираю для себя. 6) Требования контор Есть конечно работа и туда и туда. Но вакансий больше именно для дотнета. Если мелкий город и junior-разработчик - это существенно. Тут лидирует конечно .NET. 7)Стиль программирования. Мне нравится питон. Точнее даже не так: я люблю питон. Код ОЧЕНЬ краток и красив. Мое мнение тут однозначно за питоном. 8) Другие возможности. Это фишки дотнета типа IronPython или Silverlight. Мое мнение касательно первого: слишком "по студенчески". Проект еще не дошел до готовой кондиции. Касательно второго - то пусть уж с апплетами жабы борется, а до Flash текущими темпами ему лет 40 еще. Ну не кроссплатформенный он, а Moonlight будет повторять путь mono, в котором даже стандартных методов для стандартных дотнетовских классов нет: not implemented, как говорится. 9) Документация. У питона ОТЛИЧНАЯ документация. Я бы сказал, что одна из лучших. У дотнета же - MSDN, о которой у меня не лучшее мнение: ставишь критерий поиска win32 native - а оно всякие джаваскрипты в результатах выводит. Тут мне гораздо больше нравится документация питона. Однако одно "но": сторонние питона. Для нормальной работы в питоне их ПРИХОДИТСЯ использовать. Нужен массив? Подключай стороннюю библиотеку. Нужен гуй - снова подключай. Веб - опять подключать придется. Вот у них то как раз документация бывает вовсе не на нужном уровне. По тому же PyQt с ней имею большие проблемы: приходится смотреть доки для С++ для Qt. 10) "Разворачивание" приложений. проблемы и там, и там. В дотнете - с установкой новой версии фреймворка(требует прав админа). В питоне - же - либо установка питона и модулей(админа не требуют в большинстве случаев), либо программа весит под 10мб. 11) Мобильные платформы. Дотнет на WM, Python на Symbian. Хоть у меня и Symbian, но нравится больше именно WM(следующий девайс(как и предыдущий) будет на нем). Да и версии CF от обычного фреймворка отличаются ограздо меньше, чем обычный питон от мобильного. Тут мое мнение все же за .NET. 11) "Кто за ним стоит" За дотнетом стоит только MS. Мне это нравится - сильная контора.будет развиваитть и дополнять пока не появится более мощная технология(что будет не скоро еще), но при этом не поломает обратной совместимости. В питоне же - куча мелких foundations. Сам питон - одно. numpy - другое, Qt - третье, PyQt - четвертое, Django - пятое. Это немного напрягает. Тем более что стандарты у контор разные. Вот стою перед выбором. В чем я ошибся? Мой мосг требует информации. Применяю для написание скриптов и гуевых приложений. Кроссплатформ для скриптов обязателен, но mono негуевые поддерживает. |
| Автор: archimed7592 19.5.2008, 17:43 |
F# не предлагать, да? |
| Автор: Ch0bits 19.5.2008, 17:53 |
| Питон - тормоз, у него плохо с масштабируемостью и многопоточностью. |
| Автор: nerezus 19.5.2008, 18:01 |
| Ch0bits, этот "тормоз" самый быстрый скриптовый язык из распространенных. ) Ну если не считать lua, из-за его области применения. Что касается многопоточности - то global lock не мешает, т.к. он не распространяется на модули, а практически все задержки в них, а не на логике. |
| Автор: AntonSaburov 19.5.2008, 18:14 | ||
Есть еще JAVA. |
| Автор: nerezus 19.5.2008, 18:32 |
| Ну в данном случае считать, что Java=.NET )) Просто для меня существенны следующие разоличия: 1) Java требует JRE для запуска, когда как .NET встроен в винду по дефолту(кроме старых версий, конечно) 2) Но джава кроссплатформенна. 3) Дотнетовский гуй родной для винды, джава выглядит же очень чужеродно. 4) Кроссплатформ для мобильников. Остальные доводы считать идентичными для джавы и дотнета) |
| Автор: Lazin 19.5.2008, 18:38 | ||
в питоне многопоточность обычно реализуется не на уровне потоков(из за GIL это все будет выполняться последовательно) а на уровне процессов, так же есть фреймверк http://twistedmatrix.com/trac/, который в этом помогает |
| Автор: archimed7592 19.5.2008, 18:41 |
Почему Вы считаете, что питон - это не платформа? |
| Автор: MAKCim 19.5.2008, 18:56 |
тогда какой к черту .NET? Python + QT4 wrapper |
| Автор: nerezus 19.5.2008, 19:00 | ||||
![]() У стандартных слассов нет стандартных методов в нем.
Из 12 пунктов про сам язык всего лишь 1 пункт(ибо язык является частью), остальное про платформы. |
| Автор: nerezus 19.5.2008, 19:16 | ||
Но вот документация в стиле "убейте меня". Примеров ОЧЕНЬ мало, а те, которые есть - на C++, а не на питоне. Тем более что в сборке под винду нет половины контроллов(типа QWebView и т.д.) и возможностей(хз почему так собрали). |
| Автор: archimed7592 19.5.2008, 19:17 |
Почему не .NET + SWF? |
| Автор: MAKCim 19.5.2008, 19:27 |
потому что платформ, где можно запустить Python + QT4 несоизмеримо больше какие дотнетовские языки являются скриптовыми? |
| Автор: kemiisto 19.5.2008, 20:03 | ||
Нужно определиться, что есть платформа. Если, например, использовать определение:
то я действительно был не прав. |
| Автор: archimed7592 19.5.2008, 20:17 | ||
Согласен, скриптовых - нет... по крайней мере я таких не знаю...
Ну давайте закроем глаза на терминологию с формулировками и пойдём несколько иным путём. Что такое .NET? 1. JIT 2. GC 3. libraries Что такое Python? 1. JIT или нет я точно не знаю, но как таковой механизм воплощения исходного кода в инструкции процессора имеется(пусть это даже интерпретатор будет). 2. GC 3. libraries И почему .NET плафторма, а Питон - нет? Может быть я чего-то из виду упустил? |
| Автор: kemiisto 19.5.2008, 21:08 |
| archimed7592, JIT-компилятор и сборшик мусора как составные части платформы (.NET) это не тоже самое, что интерпретатор языка программирования и сборшик мусора на уровне языка (Python). Остаётся только набор библиотек, который уместнее было бы именовать какркасом (framework), нежели платформой. Кроме того, исполняемым файлом платформы .NET является файл, содержащий инструкции MSIL, а не просто исходный код на одном из языков .NET. Если по-вашему, то любой интерпретируемый язык, поддерживающий сборку мусора, сопровождает и одноимённая платформа. Платформа Ruby, платформа Lisp, платформа Smalltalk... Не многовато будет? IMHO |
| Автор: nerezus 19.5.2008, 21:19 |
| kemiisto, ты так говоришь, т.к. не видел питон. В нем аналогичная ситуация: промежуточный байт-код. Файлы pyc/pyo. В платформе питона можно компилить не только код на языке питоне, но и на других. Просто надо создать такой pyc-файл. |
| Автор: kemiisto 19.5.2008, 21:26 | ||
nerezus, дико извиняюсь.
А на каких именно, можно поинтересоваться? |
| Автор: nerezus 20.5.2008, 06:30 | ||
kemiisto,
Хотя никто не мешает написать компилер в pyc для другого языка - нет технических ограничений. С джавой подобное(но "альтернативы" есть вроде мидлет паскаля), хотя у нас на 4ом курсе пишут компилер своего языка в байткод джавы. |
| Автор: mr.DUDA 20.5.2008, 08:08 |
| Тут упоминали Python в связке QT4 для гуи. Дайте пример приложения, где так делают. Чисто из спортивного интереса глянуть. И ещё, вот по поводу крутости разработки сетевых приложений, пример, если можно. |
| Автор: Shaggie 20.5.2008, 08:12 |
| mr.DUDA, приложения не дам, а почитать можно тут же на форуме: http://forum.vingrad.ru/forum/topic-159421/kw-pyqt.html. |
| Автор: nerezus 20.5.2008, 08:26 | ||
mr.DUDA, я ошибся, в 4 строки, а не в 5 ):
Если заменить handler на свой - то можно генерировать прямо на лету. Касательно Qt: ссылку выше дали ) |
| Автор: mr.DUDA 20.5.2008, 08:36 |
| nerezus, в примере - встроенный функционал одной из стандартных библиотек? Если нет, то не засчитывается. |
| Автор: Lazin 20.5.2008, 08:44 |
| интересно, есть ли для .NET-a что то похоже на easy_install |
| Автор: mr.DUDA 20.5.2008, 08:55 |
| Shaggie, почитал обе статьи, включая ту которая про Qt4 на С++. Что сказать, если нужна кроссплатформенность то и правда "какой тут к чёрту .NET". Но вот если не нужна (и лишних 6 килобаксов на Qt нет), то сами понимаете... |
| Автор: nerezus 20.5.2008, 09:31 | ||
mr.DUDA, стандартные библиотеи. Есть и поддержка CGI в таком сервере. Тоже стандартно.
И лицензия у него вовсе не такая, как у Qt. Точнее такая же, но на модификацию самой PyQt, а вот код питона, который ее юзает, может иметь любую лицензию ;) Вот такое преимущество у скриптовых языков ;) |
| Автор: MAKCim 20.5.2008, 09:46 | ||
гы это и называется платформа пожалуйста, можешь использовать любой компонент .NET, только вряд ли у тебя получится написать все в 5 строчек вот тут уже дело в языке |
| Автор: mr.DUDA 20.5.2008, 10:02 | ||
MAKCim, дело совсем не в языке. Точно так же я могу взять и написать свой класс под любым названием и запихнуть туда прослушивание сокета, назвав это SimpleServer-ом. Код для использования такого сервера влезет в 3-4 строчки кода, практически один-в-один с приведённым примером (а Handler будет делегат на метод того же класса сервера, обрабатывающим HTTP запрос). На http://www.codeproject.com/KB/IP/ таких примеров вагон. Пока ничего сверхъестественного в питоне не вижу кроме кроссплатформенности. Просил убийственных примеров - не привели. Добавлено @ 10:04 Гм... мысль не понял. |
| Автор: nerezus 20.5.2008, 10:14 | ||||||
mr.DUDA,
Дело в том, что код питона очень краток. Это был пример. Так же в нем есть вещи типа: Например открыть файл в виде массива строк с вырезанием пробелов по краям, пропуская пустые строки:
Или объявление функций в процессе выполнения программы:
|
| Автор: MAKCim 20.5.2008, 10:50 | ||
лови сериализовать список из N отображений номера динамически созданных классов с именами class1, class2, ..., classN, в каждом из которых есть метод c именем get, принимающий параметр целого типа K и возвращающий число K + i, где i - порядковый номер созданного класса, на объект этого класса
|
| Автор: AntonSaburov 20.5.2008, 13:10 | ||
| У меня такой ощущение, что тут не желание понять. что реально решает проблему, а показать. что Питон круче. Ну занимайся Питоном, если очень хочется. Правда работы на нем найти сложновато.
Ну наверно на .NET это не так элегантно выглядит. Только что-то за последние лет 20 я таких задач в своей практике не встречал. А вот писание сайта с жуткой логикой с обращениями к распределенным базам данных с сотнями таблиц, со сложным GUI, Web GUI - сколько угодно. Исходите из того, какие задачи встречаются в реальной жизни. А восхищение элегантностью - Perl тоже выглядел офигительным языком. Ну и где он сейчас ? |
| Автор: mr.DUDA 20.5.2008, 13:33 |
| MAKCim, пример сразил наповал. nerezus, таких наворотов в шарпе конечно нету. В С++ вроде есть похожее что-то (число тоже можно было передать как параметр тимплейта функции), не помню. |
| Автор: MAKCim 20.5.2008, 13:52 | ||||||||
задача, естественно, надуманная ее цель - показать выразительность языка и его способность быстро и качественно решать сложные задачи
Perl никогда не был элегантным
в С++ по определению такого не сделать
я не вижу сложности это реализовать на питоне в итоге мы получим более простой и понятный код меньшего размера (благодаря выразительности языка) для Web-приложений есть фреймворк Django сам не использовал, но слышал много хороших отзывов в конце концов есть Java + Struts + Hibernate + Spring порвет .NET + ASP как тузик грелку или тот же RoR вообщем, для любых задач можно найти инструмент лучше, чем .NET |
| Автор: mr.DUDA 20.5.2008, 14:34 |
Максимализм просто восхищает. Так держать ! |
| Автор: AntonSaburov 20.5.2008, 15:07 | ||
Когда он появился, то выглядел просто офигительно. И отзывы были самые хвалебные. Во всяком случае чуть ли не 10 лет назад.
Prolog тоже элегантно решает очень сложные задачи. Только толку ? Да, есть какая-то область (не очень большая), где это реально удобно и красиво. Но таких областей мало. Следовательно и работы мало. Изначальный вопрос был - выбрать между .NET и Python. Тут надо исходить из цели. Если цель писать элегантные решения, которые показывают превосходство Питона, то надо заниматься Питоном. Если цель иметь хлебушка и сверху колбаски, то надо изучать то, за что готовы платить деньги, т.е. NET. Так что сначала надо определить именно цели, которые дадут критерии выбора. А потом уже выбирать. Без этого обсуждение превращается в спор без критериев - искусство ради искусства. Что вообщем-то даже в искусстве ничем не заканчивается. |
| Автор: archimed7592 20.5.2008, 15:14 | ||
Альтернатив этих немало. Для затравки: http://www.jython.org/Project/index.html http://jruby.codehaus.org/ |
| Автор: JackYF 20.5.2008, 15:39 | ||||
lib.ru от Мошкова на Perl'e написан. Далее:
Не мало, не находишь ли у меня в системе на перле написано? |
| Автор: MAKCim 20.5.2008, 15:48 | ||||
я не прав?
цель была озвучена: скрипты + GUI выбор очевиден Добавлено через 3 минуты и 36 секунд
вот только без этого, хорошо? перечитай еще раз тему с середины второй страницы и проследи за логикой |
| Автор: krwlr 20.5.2008, 15:54 |
| дотНэт спонсирует микрософт. питон: микрософт, гугль, сан, каноникал. Это только мне известные... В общем python.org/psf/. Может есть еще крупная, но мне неизвестная... |
| Автор: MAKCim 20.5.2008, 15:54 | ||
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (касаемо питона и C#) |
| Автор: mr.DUDA 20.5.2008, 17:03 | ||
С гуи не всё прекрасно. Проще и удобнее дотнета для гуи - нет. (у нас же религиозные войны всё-таки) З.Ы. максимализм - это посылать к чертям что-либо из хулиганских лучших побуждений. Хотя MAKCim-у это положено З.Ы(2) ушёл зарабатывать на колбасу поверх хлеба |
| Автор: AntonSaburov 20.5.2008, 17:16 | ||
Без чего "без этого" ? Перечитал. И не понял логики. С чем ты не согласен ? Что Питон пока не дотягивает по популярности ? В том, что предложений о работе на нем меньше ? Что критерии выбора должны быть определены, прежде чем выбирать ? |
| Автор: MAKCim 20.5.2008, 17:27 | ||
| AntonSaburov, твой тезис
1. критерии озвучены (1 стр.) 2. никакого спора нет, человек (mr.DUDA) хотел "убийственного" примера он его получил решение задачи показывает выразительность языка и не более того причем здесь вообще "хлеб" и "колбаса"? у nerezus есть четкая цель: выбрать язык, конкретно Python или .NET (C#, ...) он не спрашивает, что более востребовано, т. к "работа есть и там, и там" |
| Автор: archimed7592 20.5.2008, 17:42 |
Давай обойдёмся без таких резких заявлений... Хотя бы пока для дотнета не появится возможности не напрягаясь писать GUI вслепую, т.е. в блокноте. К примеру, в случае с Qt такая возможность есть, т.е. Qt для GUI и проще и удобнее. |
| Автор: MAKCim 20.5.2008, 17:53 |
точно вспомним (и помянем) Delphi Добавлено через 2 минуты и 59 секунд во всяком случае, GUI писАть на питоне можно а вот скрипты и .NET, получается, ортогональные понятия |
| Автор: mr.DUDA 20.5.2008, 18:33 | ||
Да ради бога, чем код по настройке виджетов/контейнеров будет отличаться от кода по настройке тех же контролов на форме? И кстати, писать гуи в блокноте будет разве только мазохист. Или любитель всяких там vim-ов Предположу, что в реале сложный GUI делают всё же не 100% в текстовом редакторе. Проще размещать и настраивать виджеты в RAD тулзе, тот же Qt зачем-то имеет собственный дизайн-тайм тул. Вооот! "Можно" и "нужно" разные понятия. Гуи можно на чём угодно написать, хоть на Фортране или Ассемблере. Кстати, просил примеров реальных гуи-приложений на питоне, до сих пор в ожидании. Видимо не написали ещё за (сколько там Питону лет кстати?) кучу времени. Приведи своё понятие скрипта, может не такие и ортогональные? Ещё вот тут говорили про парсинг/анализ строк, как это замечательно и лаконично делается на Питоне. Всвязи с этим вопрос к nerezus - в планах есть что-нить связанное с сабжем? Ну там HTML парсить или синтаксический анализатор делать. |
| Автор: JackYF 20.5.2008, 18:52 |
Звали? |
| Автор: AntonSaburov 20.5.2008, 18:53 | ||||||
Только информация в них достаточно субъективна.
Ну да - один тянет в сторону NET, другой - Python is the best. На NET тоже в пару кликов можно WebService сваять. Это не показатель.
Он спрашивает, что выбрать и в числе критериев есть
|
| Автор: mr.DUDA 20.5.2008, 18:54 |
JackYF спи, о Ктулху !!! |
| Автор: nickless 20.5.2008, 19:03 | ||
PyQt4 http://calibre.kovidgoyal.net/wiki/Screenshots http://musicbrainz.org/doc/PicardQt http://recordmydesktop.iovar.org/about.php http://home.gna.org/veusz/ http://k7z.sourceforge.net/7Z/Q7Z/ http://www.die-offenbachs.de/eric/index.html PyQt3 http://kodos.sourceforge.net/ http://unrealvoodoo.org/hiteck/projects/albumart/ http://luma.sourceforge.net/about.html http://hplip.sourceforge.net/ хватит? +1 |
| Автор: mr.DUDA 20.5.2008, 19:24 |
| http://www.die-offenbachs.de/eric/images/eric4-screen-11.png рулит !!! вот теперь я доволен и вопросов больше не имею |
| Автор: archimed7592 20.5.2008, 19:49 | ||
Код не будет отличаться ничем.. Просто его количество и качество будут существенно различаться для .NET и для Qt. В моей фразе ключевыми были слова "не напрягаясь" Насчёт мазохистов: ты видимо не знаком с Qt. Там есть много прекраснейших вещей, но вот эти мне нравятся больше всего: 1. Layouts. Где они в .NET? 2. Stylesheets. О .NET я скромно промолчу 3. Size policies, size hints, etc. Иными словами, в .NET GUI-development сводится к pixel hunting, когда в Qt всё сводится к распихиванию виджетов по умным коробкам и сеткам. В .NET всё сводится к написаю кода для оформления виджетов("контролов" по вашему), когда в Qt всё сводится к написанию коротенькой CSS. Я ещё раз подчёркиваю: с Qt GUI-часть проекта делается на одном дыхании, т.е. совершенно не напрягаясь делаются достаточно сложные и динамичные интерфейсы. Так о чём мы? Ах, да, о мазохистах: ни в одном из Qt-проектов я не использовал designer. Я мазохист? Да нет, что вы, я всегда старался упростить себе жизнь и стараюсь до сих пор. Насчёт 100% текстового редактора - ну да, не 100%... он у меня малость умный - имеет code completion... правда, в случае с .NET'ом code completion не поможет, не так ли? Так что, ничего удобнее для GUI кроме .NET не существует? Не думаю, и Qt этому пример. Не могу утверждать, что Qt - самый удобный фреймворк для GUI(и не только) - у Qt множество недостатков(архитектурных... signal/slots & meta-object system, к примеру), но, в случае с GUI, - .NET тихо курит в сторонке даже несмотря на свои делегаты, лямбды и замыкания(это я в противовес неудобным сигнало-слотам). |
| Автор: mr.DUDA 20.5.2008, 20:14 |
| archimed7592, layout-ы и контейнеры в дотнете есть: FlowLayoutPanel/TableLayoutPanel, а также anchor-ы и docking. Пиксельхантингом не занимаемся - зачем, если для точного позиционирования и отступов можно выставить пару свойств в пропертигриде? Насчёт code completion - проще набрать пару букв и ентер/пробел, чем на память помнить имена методов и т.п. (ИМХО, т.к. с vim и прочими мегаблокнотами не знаком!) А вот про сложный гуи без дизайнера -- что-нибудь навроде такого, за сколько времени можно склепать (чисто сам интерфейс, без логики)? ![]() З.Ы. Ах да, про WPF ещё не сказал - он чем-то напоминает Qt. Стили есть, layout более продвинут. Только это уже оффтоп. |
| Автор: Lazin 20.5.2008, 20:19 | ||
| archimed7592, сейчас тебе начнут рассказывать про WPF Добавлено через 1 минуту и 11 секунд
совсем немного опоздал |
| Автор: bilbobagginz 20.5.2008, 21:14 | ||||
все (т.е. 3) моих товарищей, которые работают сейчас в google в рабочих интервью были спрошены умеют ли они говорить на python. что хорошо для google - хорошо и для меня.
если конторы пишут модули, а язык в принципе развивается python 3 уже скоро выйдет, значит данный децентрализованный метод работает. что тоже оправдывает. насчет GUI не буду спорить - подход у них разный. в общем вопрос сложный, имхо теки по течению: если у тебя есть проекты и работа на дот-нете - сам знаешь что делать. (кстати неделю назад купил получил после того как на работе заказал Diving into Python ) уже посередине но мне как сисадмину он сподручнее. |
| Автор: archimed7592 20.5.2008, 21:20 | ||||||
Ыыы, а скажи честно, ты ими пользуешься? Нет? А почему? Потому что тормозят безбожно?
Что за чудо-свойства такие? Вопрос тебе такой: если по тем или иным причинам скрыть один из контролов, всё быстренько перекомпонуется как нужно?
Минут 5-10, чисто чтобы код набрать смотря на картинку. |
| Автор: MAKCim 20.5.2008, 21:27 | ||||
http://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82
вот небольшой примерчик работы со строками подсчитать количество строк в файле, которые содержат только целые неотрицательные числа, разделенные любым разделителем
Добавлено через 2 минуты и 18 секунд красиво |
| Автор: nerezus 20.5.2008, 21:55 | ||||||||||||||||||
Просто в мелких городах и на начинающих разработчиков проблемы будут, если не самое распространенное брать. По крайней мере на питоне(сетевые скрипты) я пару сотен поднял(за инте надо было заплатить), хоть чисто для интереса кодил, а на дотнете же не пробовал поднимать. Но средний скрипт на ~$20 я пишу примерно за полтора часа. Вполне неплохо для меня, т.к. писать их оч. интересно.
+ поставить mono - еще та проблема(я их все-таки под никсы пускаю в основном)
LayOut'ы есть, но я их не юзал - Anchor'ы мне понравились на порядок больше.
Если бы был Python под дотнет - юзал бы его. Но его нету(поделки типа IronPython не в счет). Так что трабл ) |
| Автор: mr.DUDA 21.5.2008, 00:02 | ||||
Пользуюсь. Не тормозят и не должны.
Location и Size, и другие. Скрываю контрол, если стоит Dock то остальные перекомпонуются. Или если AutoSize. За подробностями - в пм или мсдн. Я рад за тебя На остальное nerezus ответил по существу. |
| Автор: Fortop 21.5.2008, 01:18 |
Можно поинтересоваться? Как давно существует? Сколько веб-инсталяций? (сам видел 2-3 проекта, плюс, если не ошибаюсь МойКруг Яндекса) 1. на вскидку 60-70 элементов на приведеном скриншоте. Ты уверен в своей оценке в 10 минут? 2. Ты забыл про CSS для того чтобы оно еще и выглядело так же. |
| Автор: Lazin 21.5.2008, 08:21 |
их http://www.djangosites.org/ |
| Автор: bilbobagginz 21.5.2008, 08:32 | ||
если гора не идёт к Магомету, Магомет пойдет к горе. закон экономики: на периферии з/п ниже, спрос ниже, цены ниже. хочешь увеличить з/п ? либо работай серьёзно по удаленке (Т.е. открой свой фриланс офис) либо перезжай в "не маленький" город. Добавлено через 10 минут и 35 секунд кстати, еще одно кстати: если ориентироваться на то, что в Скоропопинске на дотнете у тебя всё будет пучком - тоже наивно. Вдруг построится какой-то завод по выпуску дождевых червяков, на который наймут 1/2 Скоропопинска, а IT на заводе будет Линукс. А так как сфера услуг будет ориентироваться на этот завод - через короткий срок засунешь дотнет в одно место. Если думать широко, можно интересные парадоксы найти... например, что на питоне можно и под макинтош писать и под соляру. а в США напр. рынок этих платформ (т.е. образовательный и банковский рынки соответственно) держит в себе не меньше капитала чем напр. весь российский рынок ПО. Кстати а какой вообще оборот у российского рынка ПО относительно других стран ? но для этого надо на изучение английского потратить напр. пол года, открыться официально... это всё морока, на которую "технарь"-наёмник не пойдет. а если не пойдет - пускай сосет лапу. так ему и надо |
| Автор: archimed7592 21.5.2008, 15:04 | ||
Ок, поизучаю мсдн.
Эмм, а, ну, во первых, не вижу там 70 элементов, хоть убей... Во-вторых, они же все одинаковые, не так ли? Или у .NET'чиков принято не создавать новый класс, для повторяющихся сущностей, а дублировать код? 0_о |
| Автор: mr.DUDA 21.5.2008, 15:43 |
Если присмотреться к скрину, имя класса написано справа от имени элемента (в Document Outline). Так что ответ: нет. Контрол не совсем простой: по умолчанию нижние две трети скрыты и показываются только при выставлении соотв. чекбокса ("Use texture transformations" или "Remap channel map"). Вопрос не о том, сколько элементов на картинке, а сколько времени уйдёт на позиционирование элементов вручную в текстовом редакторе. Или мы на бумажке сначала рисуем, считаем координаты и размеры в процентах/пикселах, и только потом пишем код ? Добавлено через 5 минут и 20 секунд З.Ы. контролов там не 70, а 76 |
| Автор: Любитель 21.5.2008, 15:54 | ||||
Уже где-то недавно проскакивало это всё, но да ладно 1. "Смотря на картинку". В уме представлять всю кучу виджетов/контролов - зачастую напряжно. Дизайнер есть гуд. Независимо от гуи-либы. 2. Qt GUI vs WinForms. Qt выигрывает. Явно. Хотя Qt Designer и uic - далеки до идеала. 3. Фтопку ВинФормз, будущее дотнетовского гуя (ну, в контексте MS по крайней мере) - без сомненья WPF...
Тут всё-таки определиться бы - язык обсуждаем в первую очередь или платформу. Питоноподобный язык под .Net - я думаю более чем реально. Почему кстати IronPython не в счёт (сабж не смотрел - просто интересно). Если говорить про кроссплатформенность - .Net, конечно более чем слаб (повторяться надеюсь не будем).
Ну, впрочем, если уж докапываться - биндинг для того же Qt вроде есть, правда до ужаса кривой (под .Net). Есть GTK# (где любители ГТК?). А вообще - сферу применения хотелось бы подробней |
| Автор: archimed7592 21.5.2008, 16:01 | ||||||||
Я ж говорю, незнакомые с Qt люди не верят, что можно вообще не задумываться о координатах/размерах и утверждают, что то, чем они занимаются в дизайнере - это не pixel hunting Смотри, простой пример, дальше по аналогии:
Ты видишь тут хоть одну координату, размер?
Это делается с помощью 1-й строки в том же текстовом редакторе или при помощи 7-10 телодвижений в дизайнере Добавлено через 3 минуты Кстати, либо у меня с арифметикой плохо, либо их слишком много(читай: есть дублирование кода).
Само собой, что не будет у меня примерной картинки, как предоставил mr.DUDA, я нарисую её на бумажке, но ни о каких вычислениях координат речи быть не может. |
| Автор: Любитель 21.5.2008, 16:33 | ||
Ну, я считаю, что лучше сразу в дизайнере рисовать |
| Автор: archimed7592 21.5.2008, 16:52 |
| Любитель, maybe это дело привычки/сноровки. Я буду дольше искать "как сделать это и это" в дизайнере, чем писать код. Плюс к этому два ньюанса: 1. я очень люблю ослаблять зависимости, а дизайнер к этому совсем не располагает. 2. дизайнер, как ты уже не раз замечал, для Qt немного "недо"дизайнер. Есть вещи которые красиво решаются парой строк, а в дизайнере их либо сделать невозможно, либо делать нужно через задний проход. |
| Автор: Любитель 21.5.2008, 17:12 |
| Согласен. Для Qt сам часто вручную пишу. Раньше вообще только вручную |
| Автор: nerezus 21.5.2008, 17:38 | ||||
Придется открывать контору - переехать не могу ( Не из-за себя. конечно.
Чисто пример "стабильностьти" |
| Автор: mr.DUDA 21.5.2008, 20:05 |
| archimed7592, ну по-любому ведь приходится думать о (хотя бы) относительных размерах контейнеров/layout-а. Дизайнер не есть зло, особенно если настраивать приходится много чего (тот код, который у тебя значится под " // configuring widget"). Слабая связь чего с чем? И про дублирование кода непонятно, если вот у меня 5 чекбоксов в разных местах - это дублирование кода, т.е. их в цикле расставлять надо? |
| Автор: archimed7592 21.5.2008, 20:32 | ||||||
Эмм, ну и что, тебе думается лучше в дизайнере, чем на бумажке? Ну, да, привычка - сильная штука... Кстати, уточни, пожалуйста, что ты понимаешь под этими относительными размерами о которых нужно думать(хотя бы
Покажи, плиз, пример, где нужно много чего настраивать, а? Чтобы это у меня больше 5-7 строк было что-то не припомню. К тому же, как насчёт разбиения на ф-ции этапы создания интерфейса? Дизанер это умеет? Хотя зачем ему, если файлы XXX.designer.cs никто читать-то и не будет? Ну как чего с чем? Есть, скажем диалог, приведённый тобою выше. Ответь на вопросы: 1. Что он делает? 2. Что ему нужно, чтобы он делал это(что нужно выставить "наружу", что ему нужно "спросить с" внешнего клиента, чтобы выполнить задачу и т.д.)? 3. С какими из остальных частей GUI/логики этот диалог связан? Почему? А зачем нужна эта свзяь? А нельзя ли её ослабить? Дык вот, если говорить о С++(а я именно на С++ с Qt работаю), то там результатом правильных ответов на поставленые вопросы будет реализация идиомы PImpl вкупе с минимальным интерфейсом наружу и минимальной завязкой на "остальной мир". К примеру, зачем выставлять наружу все эти labelXXX(отдельный вопрос: нахрена их вообще хранить как поля класса)? Я понимаю, что в случае, с C#, к примеру, толку от PImpl не особо много и для тебя это звучит немного дико, просто, когда говорил это, немного не подумал, что спор здесь не про С++, а про Qt и GUI в принципе, но всё равно, дизайнер как-то, мне кажется, склоняет к созданию менее качественного кода Простой пример: я уже не помню, как это в .NET делается, но вроде как, для того чтобы создать юзер-контрол, которым можно будет пользоваться в дизайнере, нужно сделать немало телодвижений(помимо написания кода), что, вероятно, больше склонит девелопера к тому, чтобы наклепать 20 раз одно и то же, вместо того, чтобы сделать качественный контрол, который можно будет в том же дизайнере 20 раз кинуть на разные формы. В случае с работой без дизайнера такой проблемы нет в принципе
Я не могу тебе так просто ответить, не посмотрев кода... Не телепат, всё таки Ну вот, те же вопросики рядом с некоторыми полями ввода - это, насколько я понимаю, обыкновенные лэйблы, которые каждый раз отдельно настраиваются(помимо того, что можно просто задать текст помощь или номер индекса в справочной системе - неважно), да? Т.е. то, что ты приноровившись быстренько проделываешь руками превращается в redundant code. Я боюсь представить, какую гигантскую работу придётся проделать по всему проекту, если по каким-то причинам придётся что-то изменить в способе отображения этой самой контекстной помощи(или как она там называется?). |
| Автор: Kefir 22.5.2008, 09:34 | ||||||||||||||||||
archimed7592, эк вы батенька .НЕТ унижаете, как будто .НЕТ в каменном веке создавался.
Как это не верят? Верят. Более того и сами не заботятся об этом. Поставил док, поставил якорь. лайот какой-нибудь сделал при желании - наслаждайся. И это винформы. Я уже даже не говорю о WPF, о возможностях которого QT может только мечтать. А то что ты кодом пишешь - это уже личные заморочки каждого. Мне удобно юзать дизайнер. А насчёт "умного" лэйота QT - ну вот ты знаешь что текстовое поле будет содержать 2 символа. Что, он тоже мысли прочитает и сделает маленькую ширину? Вот. В любом случае, даже если не пикселями, то чем-то это надо задавать. В любом случае ты должен сказать, что кнопка находится внизу формы (к примеру) или ещё что-то.
вообще интересно посмотреть на код. просто из любопытства
Что-что? Первое предложение не ко мне В) Не смог вкурить эту философскую мысль Что значит "зачем labelXXX"? Это ты к чему? Ну нужны там надписи, ты предлагаешь их удалить? Класс мембуры мешают - так не создавай ты для них отдельных класс мембуров, кто мешает-то?
почему? я не раз глядел в код дизайнера - ничего страшного не обнаружил. Просто вручную писать этот код, имхо, неэффективно. Всё сводится к набору текста. Monkey Job. и код этот как ни крути создавать дольше чем набросать в дизайнере. Пока напишешь, пока запустишь и проверишь так ли оно выглядит и т.д. Ни за что не поверю, что ГУИ (примитив одной кнопкой и текстовым полем не в счёт) вручную писать быстрее чем в дизайнере.
эээ... кхм... как бы сказать... то есть ты говоришь, что все .НЕТ девелоперы тупы как пробки?
Есть такая песенка, там тоже неопровержимые фразы наподобие твоего утверждения:
ну почему отдельно? можно поставить один эвент и показывать разную информацию в зависимости от кликнутого вопросика. Чем плохо? Можно и тултип поставить при желании. ЗЫ Извините, если немного нагловатый тон в посте. Что-то я разволновался. |
| Автор: mr.DUDA 22.5.2008, 10:01 | ||||||||
Ага, и работая в команде ты будешь на пальцах объяснять человеку как элементы расположены, или он телепат, или может быть бумажку сканировать и пересылать по имейлу? LOL
Уточняю. Я про размер в процентах или пикселах, отводимый конкретному виджету в контейнере (так это вроде в Qt называется?). Width и Height. Размер кнопок, текстовых полей, разбивка на табличный layout с заданными размерами и т.п. - всё что с размерами связано.
1. Настраивает текстурный мап. 2. Ссылка на один (!) объект. Его свойства отображает и редактирует этот (не диалог!) контрол, будучи размещённым где-то на другом контроле. И таких штук 10, на каждый текстурный мап. Всё вместе входит в гуи редактора материалов. 3. Ни с какими внешними объектами, кроме поданного на вход TextureMap он не связан. Ни о чём больше не знает, да и не нужно это.
Копи-паст элементов в дизайнере (вместе со всеми настроенными свойствами) за два клика или Ctrl+Drag никто не отменял, это во-первых. Настроить всплывающую подсказку - просто вбить текст в свойстве "вопросика", за два клика - это во-вторых. |
| Автор: Lazin 22.5.2008, 10:06 |
| казалось бы, причем здесь Qt |
| Автор: mr.DUDA 22.5.2008, 10:07 |
| http://files.vingrad.ru/mr.DUDA/shots/shot17.png к моему предыдущему посту. |
| Автор: archimed7592 22.5.2008, 10:43 | ||||||||||||||
Ну, вот, ты сам привёл пример
Ну давай простой пример нарисуй, только, чтобы не "70" элементов, а 2-4 элемента(примитивных) и скажи что тебе куда запихнут, что вниз, что влево, что вправо, в общем, какой-нибудь частый случай изобрази, а я тебе покажу как легко это делается в коде.
Это завязки на логику. mr.DUDA, вроде ясно дал понять, что логику писать не нужно, я лишь показал, где(в каком месте кода) с этой логикой придётся увязывать контролы и всё.
Дизайнер SWF позволяет не создавать мембера для отдельных контролов? Респект ему и уважуха, если это так Плюс к этому, есть вещи, я уверен, которые с помощью дизайнера настроить не удастся. Тогда придётся оставлять мемберов лишь для того, чтобы произвести донастройку в конструкторе(или где у вас принято это делать), после чего эти мемберы будут мёртвым грузом в каждом объекте, не так ли?
Ты немного не в том ключе понимаешь мои слова. Я изначально утверждал, что SWF так спроектирован, что нет возможности писать код в notepad'е, и не напрягаться в этот момент, а в какой пиксель нужно шлёпнуть контрол, а какой у него должен быть размер и т.д. BTW, в Qt есть возомжность и pixel hunting, если появится желание пострадать фигнёй
Я чес слово уже не помню что там к чему. У меня мало опыта в написании гуя под SWF. Ну, скажем, такой пример: есть некий контрол, отображение которого зависит от многих факторов доступных только в рантайме, и, чтобы всё это запрограммировать так, чтобы это выглядело в дизайнере также, как в рантайме - мне кажется, не самая простая задача. Если дотнетчики и не ленятся делать это, в любом случае им приходится писать лишний код, который нужен именно для дизайнера - не это ли monkey job?
Подойди к вопросу более абстрактно: есть такие элементы UI, которые не сразу понятны неискушенному пользователю. Есть способ помочь ему освоится: сделать контекстную помощь, которая должна быть доступна при взаимодействии с элементом. Насколько я могу видеть - просто накиданы лэйблы, за которыми нужно самому следить, самому прописывать тултипы или ещё что-то и т.д. Если, вдруг, понадобится сделать так, чтобы при наведении на вопросик всплывал коротенький тултип со словами "нажмите меня, чтобы увидеть помощь", а при щелчке на нём открывалось плавающее окошко(если оно ещё не открыто) и в нём появлялась бы подробная развёрнутая помощь, то, пришлось бы перевбивать тултипы, а саму помощь выносить куда-то в другое место, не так ли? А потом передумали и решили, что открываться помощь должна не по щелчку на вопросик, а просто при наведении на него мыши, то пришлось бы перецеплять эвенты, не так ли? Далее, решили убрать вопросик и сделать так, что помощь высвечивается просто при наведении мыши на непонятный контрол, что делать придётся ты сам, думаю, догадываешься. Потом передумали и решили вернуть вопросик. Потом ещё подумали и решили сделать цвет вопросика не синим, а пурпурным. И так далее. Я тебе могу долго приводить примеры того, как можно изменить способ отображения контекстной справки(представь, что я привередливый клиент), просто я хочу, чтобы ты понял, что при правильной архитектуре GUI-фреймворка можно легко писать намного более качественный код, который просто невозможно делать в дизайнере. |
| Автор: Kefir 22.5.2008, 11:18 | ||||||||||||
| * сразу оговорюсь - не понимаю при чём тут SWF... говорю лишь о VS В) * archimed7592, так, я может не обозначил свои цели. единственное что я хотел сказать, что винформы не такая примивная штука как ты о ней говоришь (по крайней мере у меня лично сложилось такое впечатление
Конечно прямо вот так "2 символа" я не напишу. просто сделаю маленькую ширину.
ой слушай, ты меня не понял. это к спору не относится. просто реально интересно В) жалко чтоли?
Дизайнер студии позволяет не создавать мемберов. Эти лейблы там есть потому что как-то надо в дизайн тайме в ними работать. Так что всё выглядит одинаково просто с той разницей, что мемберы можно и не делать. А какие вещи ты бедушь донастраивать? Лейбл тот же самый - чего ему, шрифт поставил да и всё. Ведь мембуры не нужны для тех контролов которые не задействованы в логике. Если ты хочешь менять надписи - всё равно надо какую-то ссылку иметь.
По-моему он спроектирован так именно для того чтобы не было надобности писать это в блокноте В) вот и всё.
Ну во-первых, я не вижу преимущества писать код для всего контрола вручную. В дизайнере создаётся костак контрола. В логике уже обрабатываются определённые ситуации. Итого для дизайнера не надо писать ничего. Не вижу лишнего кода.
Если стоит такая задача, то на винформах лучше всего реализовывать через юзер-контрол. Так вот. Ещ раз - я не говорю что винформы = великолепная гуи, или что она лучше QT. я просто посчитал своим долгом высказать своё мнение. я с винформами работал не то чтобы очень долго, но достаточно. и могу сказать, что там есть свои пакости и непристойности, однако это не значит что она уж совсем никудышная. дизайнер - удобный. просто и со вкусом. если надо можно очень даже неплохие гуи создавать. возможностей куча. ЗЫ главное теперь до сравнения WPF не дойти ЗЗЫ При чём тут SWF?... ЗЗЗЫ так вот питон - классный язык. очень нравится его 1) кроссплатформенность и 2) скриптованность. Очень удобно. С .НЕТ сравнивать его не могу. ибо всё-таки плохо в нём разбираюсь (дилетантишка одним словом). |
| Автор: archimed7592 22.5.2008, 11:21 | ||||||||||
mr.DUDA, зачем мне объянять кому-то как расположены элементы? 0_о Кому какая разница, как они расположены, если виджет - это "черный ящик", который отвечает за своё дело и ничего более?
Зачем мне эти размеры? Нет, бывают редкие случаи, что нужно сказать, что этот виджет занимает N% контейнера... Ну и так и пишу:
Зачем мне дизайнер для этого?
Everything by the book Если вернуться к тому, с чего начинали, и опять поффтопить про сильные и слабые связи в С++, то, к примеру, внешний виджет, использующий твой, при изменении внутренней структуры твоего виджета будет перекомпилироваться, несмотря на то, что интерфейс с которым он работает с твоим виджетом не изменился. Происходит это потому, что ты, к примеру, изменишь название приватного поля, или добавишь приватную ф-цию... Это проблема конкретно С++.
Ух как... Вот об этих копи-пастах я и говорю - ухудшают они качество кода. А когда ты логику пишешь, ты тоже копи-пастом не брезгуешь? Ну, собственно говоря, я уже привёл выше Kefir'у связанные с этим проблемы, повторяться не буду. |
| Автор: archimed7592 22.5.2008, 11:40 | ||||||||||||||||||||
В VS уже нету такой штуки, как System.Windows.Forms? Жаль Я употреблял это сокращение, дабы дать понять, что говорю именно об SWF, а не о WPF, который якобы "ещё круче Qt"
О, вот как, а что будет с этим контролом, когда за компьютер сядет человек с плохим зрением и выставит огромный системный шрифт?
Ну что, что, откуда я знаю что Что-то вроде этого
Мало ли что там может быть - от логики зависит и от связи с ней
А что, не бывает в мире ГУИ вещей, которые приходится донастраивать в конструкторе? Скажем, заливать combo/list-box значениями, полученными откуда-то динамически?
Блин... Перефразирую: 1. Есть фреймворк, который настолько удобно спроектирован, что можно не задумываясь писать ГУЙ в блокноте. 2. Есть фреймворк, который не очень удачно спроектирован, хотя бы, потому что для того, чтобы сделать дизайн необходимо иметь дизайнер?(он что, часть фреймворка?) Напомню, что началось всё с фразы 3-хмерного маньяка, мол "нет ничего удобнее для ГУЯ, чем дотнет".
Мдя, ну возьмём table(не помню точного названия) с его возможностями настраивать через всяки диалоги связи с датасетом и т.п. Да и сам датасет, хоть он и не гуёвый элемент, немало диалогов для настройки имеет. Я говорю про написание этих диалогов - их придётся писать, если хочешь, чтобы в дизайнере можно было манипулировать контролом также, как в коде. Это и есть никому не нужная работа(которую, подозреваю, многие делать поленятся, ибо, действительно - monkey job, если сам контрол, конечно, не для продажи пишется).
Вот видишь, сразу контрол. А почему контрол? А потому что без дизайнера себе жизни не представляем, да? Я же сказал(от лица привередливого клиента), что через месяц передумаю и попрошу сделать так, чтобы всё действо происходило при наведении мыши на непонятный элемент, а не на контрол рядом с ним(будь то вопросик или крестик - неважно). И чем тебе этот контрол поможет? Добавлено через 10 минут и 28 секунд
А чё ж в спор полез?
|
| Автор: Kefir 22.5.2008, 12:03 | ||||||||
ах соо. тогда ясно. просто мне эта аббр. больше флаш напоминает В)
научи меня, о гуру!
конечно бывает. вот и донастраивай. если ты хочешь с контролом общаться напрямую - делай мембер. или ты на QT говоришь можешь комбик заполнить без ссылки на него?
Действительно. Потому что незачем. Накатал что тебе конкретно надо и живи спокойно. Зачем делать универсальный контрол, когда ты его юзаешь в двух местах программы? Понадобится полная универсальность - вот когда понадобится - тогда и сделаешь.
Нет, не угадал В) Юзер контрол потому что он позволяет запихнуть в него несколько контролом одновременно. То биш в него я поставлю, к примеру, лейбл и текстовое поле. Скажешь поставить сбоку вопросик - пожалуйста. Поставлю в него ещё и вопросик. Добавлено через 53 секунды А что, в QT вопросики по другому расставляются? |
| Автор: mr.DUDA 22.5.2008, 12:21 | ||||||
Видимо ты не работал в команде, когда с виджетом работает более чем один девелопер.
Да, конечно не брезгую. У меня весь код - один сплошной копипаст !
То есть Qt настолько умён, что человек-дизайнер уже как бы не нужен? Всё будет расставлено и растянуто как положено. Вау, нафиг тогда винформс и WPF, накоплю 6 килобаксов и перейду на Qt/C++ |
| Автор: archimed7592 22.5.2008, 12:39 | ||||||||||
Вообще говоря, я услышал эту аббревиатуру, если мне память не изменяет, от Exception'а... Может быть я расшифровал её неправильно? Ну, не суть. Зачем сарказм? Я действительно не знаю, что будет с контролом, если выставить крупный системный шрифт. В коде это делается так:
Это я расписал в 6 строк, ибо, как я подозреваю, не все знакому с С++ и не поймут записанное в одну строку(намного короче). Думаю, что в .NET'е можно проделать тоже самое, только не в дизайнере.
Можно сделать это без мембера. Просто ссылка будет иметь ограниченную область жизни(от места объявления до закрывающейся фигурной скобки):
Ты же не удивляешься, что дизайнер как-то умудряется производить настройку контролов без наличия мемберов(раз их можно убрать)... То же можешь делать и ты, только вот где проблема - без дизайнера жизнь не сладкая у SWF программистов
И что, ты в обоих местах будешь проделывать одни и те же действия? Насчёт "зачем универсальный?" - а я не знаю зачем Об этом я собственно и говорю - вам не хочется делать универсальные контролы, и, когда придётся что-то изменить - придётся делать много monkey job и ни к чему другому копи-паст в дизайнере привести не может(собственно, как и копи-паст в коде).
Эххх. Теперь представь, что у тебя есть лэйбл и эдитбокс(ну, типа поле для редактирования - ничего особенного). При наведении на оба элемента(что на лэйбл, что на эдит) должна дёргаться контекстная помощь. Занул ты обоих в свой контрол и радуешься жизни. Теперь представили, что таких полей для ввода с надписями много и они как-то должны быть сгруппированны. Когда у тебя просто есть отдельно лэйбл и отдельно эдитбокс, то ты можешь засунуть их в отдельные столбцы GridLayout'а. Когда они обёрнуты в какой-то спец-контрол, отвечающий за помощь, то это уже становится монолитный контрол и засунуть разные его части по разным столбцам не получится. Можно, конечно, воспользоваться span'ом на оба столбца, но эффект будет тот же, что если ты эти пять полей для ввода засунешь в VBoxLayout, т.е. будет похоже на ёлочку. Как тут поступим? |
| Автор: archimed7592 22.5.2008, 13:06 | ||||||||
Да, не работал. Правда, я не до сих пор не могу понять, что это за мега навороченный виджет должен быть, чтобы нельзя было разбить его по ф-ционалу и дизайну на кусочки и поручить их разным людям.
Сарказм какой-то пошёл.. Ты хочешь услышать, что я пытаюсь донести или ты несмотря ни на что будешь продвигать свой тезис, мол ничего удобнее .NET для гуи не существует? Тогда не вижу смысла в дальнейшей дискуссии.
Не понимаю тебя. Вот смотри, код:
Вот что получается. ![]() Слева-направо, сверху-вниз: 1) размер по умолчанию; 2) юзер руками растянул по горизонтали; 3) растянул во вертикали; 4) растянул по диагонали. И теперь вопрос: какие такие размеры мне пришлось учитывать? |
| Автор: mr.DUDA 22.5.2008, 13:27 | ||||
А вариантов, когда виджет дорабатывает кто-либо кроме создателя не рассматриваешь? Или тот же виджет, но спустя полгода ты подзабыл как оно должно было выглядеть.
Пример в ответ. Если добавить справа от текстбокса кнопку, размер кнопки можно как-то задать? |
| Автор: Kefir 22.5.2008, 13:36 | ||||||||||
да всё ясно - мы просто по разному расшифровываем эти буквы
ну конечно, само собой.
конечно, само собой. так оно и получается. только я работу с дизайном делаю делаю в дизайнере, а ты печатаешь кодом. в чм превосходство второго варианта? пока что я могу лишь заметить, что в дизайнере работать намного нагляднее, чем описывать в коде.
так о чём разговор? суть всё то же самое.
ну опять. ну вот, сделал я контрол и буду юзать его хоть сто раз в любых местах. универсальный контрол в моём понимании - тот, который можно использовать в различных ситуациях. при чём тут этот копи-паст? перед этим хотелось бы услышать как всемогущий QT решает эти задачи. а то я пишу, пишу, жду, жду... |
| Автор: archimed7592 22.5.2008, 15:34 | ||||||||||||||
В том, что в дизайнере нельзя задать ширину относительно размера системного шрифта, а без дизайнера можно. Ок, раз то же самое, покажи мне как ты без мембера добавишь в дизайнере комбобокс и потом проинициализируешь список его значений в конструкторе.
Ок. Есть контрол "форма ответа в тему". Она присутствует в трёх местах - быстрый ответ, "долгий" и ответ в ПМ. Хотя нет, ещё несколько мест: новая тема, новое ПМ. Ситуации суть те же. Написали мы такой контрол. Ок. Нужно разместить его на странице. Размещаем... Ой, а как эту форму немного кастомизировать для разных случаев? Блин, нужно делать специальные диалоги настройки специально для дизайнера, вот же чёрт, придётся заниматься monkey job лишь для того, чтобы воспользоваться всею "мощью" дизайнера... Аналогия ясна? Что-то мы из пустого в порожнее гоняем... Я напомню в чём здесь спор: я утверждаю, что некоторые контролы со сложной логикой при использовании в дизайнере приходится настраивать через спец. диалоги. Диалоги эти не нужны никому, кроме дизайнера. Вывод: это плохая черта делания ГУЯ в дизайнере, ибо приходится писать эти диалоги лишь для того чтобы пользоваться дизайнером. Вы согласны с этим выводом? Нет? Почему? Ещё напомню это: без дизайнера делать ГУЙ нельзя при использовании SWF, а при использовании Qt делать ГУЙ можно без дизайнера. Вывод: Qt намного удобнее потому что не нужен никакой code behind, чтобы скрыть тот ужас, который генерит дизайнер - им можно просто не пользоваться. Вы согласны с тем, что фреймворк в котором можно с лёгкостью делать гуй без дизайнера лучше? Нет? Почему?
Чего ты написал до чего ответа не дождался? 0_о Я не утверждаю, что Qt решает эту задачу. Я утверждаю, что эту задачу можно решить когда не используешь дизайнера, а сделать это(т.е. писать код руками без дизайнера) можно только с один из двух обсуждаемых фреймворков - с Qt. Я напомню, в чём вопрос: я утверждаю, что дизайнер принуждает к плохому стилю. Я бы даже без необходимости размещать в гриде не стал бы оборачивать лэйбл и эдитбокс в невидимый спец контейнер, отображающий хэлп и это не потому что я такой "гуру", а потому что просто я не пользуюсь дизайнером и не скован его ограничениями. Собственно, я буквально неделю назад занимался прикруткой этого контекстного хэлпа к одному проекту. Прикручиванием я занимался уже после того, как проект был реализован, ибо когда я пытался научить персонал пользоваться программой, я понял, что другого выхода просто нет - запомнить пять шагов они не в сосотоянии, использовать(понимать) "обыкновенную" справку они тоже не в состоянии. Как бы смешно это не звучало, сначала я сделал с подобными вопросиками - даже это оказалось им не по силам(они не виноваты, просто уровень компьютерного развития почти нулевой, они из калькулятора результат переписывают на бумажку, после чего вводят его в экселе в соседнем окне с бумажки). Тогда я сделал так, что при наведении мыши во второй половине окна отображалась html'ина с подробнейшим описанием и иллюстрациями(к слову, это хоть и помогло, но не особо - в итоге пришлось снимать видео при помощи CamStudio, где показывать подсвеченным указателем мыши куда нужна тыкнуть, зачем и т.д.). Итак, добавление справки выглядит так:
Как ты понимаешь, когда я переделывал с вопросика на hoverEnter/Leave я даже не заглядывал в этот код, я лишь немного подправил ContextHelpManager.
Почему должно было? Хочешь сказать как оно выглядело? Ну не проблема написать три строчки:
Когда виджет в лэйауте, то размер - величина рекомендательная. К примеру, справа - это в отдельном столбце? Тогда столбец будет себе подбирать ширину по определённым правилам. Ньансы можно выбрать такие: задать стретч, чтобы этот столбец всегда занимал минимум пространства, тогда будет использован sizeHint отдаваемый кнопкой. Иначе, можно для каждой кнопки задавать fixedWidth. Иначе, можно выставить sizePolicy->horizontalPolicy в Fixed. Ньюансов куча - зависит от того, чего ты реально хочешь добится. Можно вообще эту кнопку вынуть из лэйаута и позиционировать её и задавать ей размеры руками, просто никто так делать не будет |
| Автор: mr.DUDA 22.5.2008, 15:40 | ||||
Вот это я и хотел услышать. Значит в Qt всё же есть шаманская машинка, которая определяет оптимальные размеры и отступы (по size policy и т.п.). Удобно (без сарказма).
В винформах есть http://msdn.microsoft.com/en-us/library/ms229605.aspx, там в т.ч. есть вариант Font. |
| Автор: Kefir 22.5.2008, 16:10 | ||||||||||||
так вот в коде и добавляем В) то что есть дизайнер не отнимает возможности дописать что-то в коде. я не прав? о тут mr.DUDA даже лучше сказал В)
Не смогу без лишних движений. Более того, мне его и не надо. Мемберы мне не нужны в тех случаях если мне не надо совсем не надо с контролом взаимодействовать. При такой постановке задачи по-моему, нет ничего плохого в том, чтобы комбик был мембуром. Если я хочу до контрола достучаться из кода, то мне нужны мемберы. Всё.
Я понял что ты имеешь в виду, только я тебе о том и говорю - набросали костяк в дизайнере (ну там, накидали поле текстовое для ответа, кнопычка, ещё что-то). А в коде затачиваем до опупения. Для дизайнера ничего не надо делать.
Это уж как хотите - хотите чтобы контрол полностью кастомайзился в дизайнере - пожалуйста, не хотите - не делайте. Никто не обязывает писать диалоги для дизайнера.
Да кто тебе гадостей таких наговорил? Пиши на здоровье!
нет. не согласен. тот фреймворк лучше, у которого можно с лёгкостью делать гуй (заметьте, опущена часть без дизайнера). а с дизайнером или без - это уже дело второе. я считаю, что винформы очень удобны в плане создания гуя, ты считаешь, что нет, потому что тебе больше нравится писать ручками нут, я как бы думал, что вот ты сейчас меня послушаешь и скажешь как на QT это сделать (ну мне это показалось логичным, может я неправильно понял). хосспади, так напиши такой же хелп манагер на шарпе и радуйся жизни. Ты меня пытаешься убедить в том. что на QT всё намного проще и показываешь код, который к QT отношения не имеет. Ну да, клёво, класс, который подписывается на чужие эвенты (условно говоря). |
| Автор: Любитель 22.5.2008, 17:00 | ||||||
Это не шаманская машинка - это просто нормальный механизм лейоутов ;) И дело (для меня) вовсе не в том, что он помогает писать руками. Я за дизайнер - при приемлемом качестве генрируемого кода (не в плане красоты, конечно). А вообще - где изначальная тема-то? Добавлено через 6 минут и 34 секунды
Кстати, почему динамическое выделение памяти. Да ещё и без парента!
Тебе достаточно. Другим нет. Как бы то ни было - Qt Designer тоже существует. Более того, для интеграции виджета (просто интеграции - безо всяких специальных проперти-эдиторов и пр.) в Qt надо писать плагин. .Net этого не требует. |
| Автор: archimed7592 22.5.2008, 19:49 | ||||||
Опустим пример с autoScale. Возьмём произвольный контрол, которому не получается сразу задать размер без кода. Вы задаёте размер в дизайнере + корректируете размер в коде - как вы контролируете что получится в итоге - как будут себя вести соседние контролы? Если всё пучком и всё под контролем, то претензию снимаю.
В общем, я не могу далее вести дискуссию об этом, ибо не хватает опыта в делании гуи под SWF, чтобы показать мои предположения на примере(или опровергнуть эти предположения). Будем считать, что я сдался Вы с маньяком и наговорили - мазохизм, все дела... Я, в принципе, не спорю, что это мазохизм для SWF. Аргумент был один, остальные относились немного к другому и, если ты вернёшься назад, то увидишь этот аргумент: вы с SWF занимаетесь pixel hunting'ом - попробуй доказать мне обратное. Скажем так, если тебе нужно создать диалог как я показал на примере выше и тебе без использования дизайнера придётся указать хотя бы одну координату или хотя бы один размер, то ты занимаешься pixel hunting'ом, и то, что ты проделываешь это при помощи указателя мыши в дизайнере, а не при помощи клавиатуры и калькулятора в блокноте - это не аргумент. Следствие же из отсутствия нужды заниматься pixel hunting'ом - возможность делать гуи без дизайнера вообще(и остальные рассуждения на этот счёт, про качество кода и т.п.).
Ну да, клёво, а теперь вспомни, с чего пошло это ответвление спора... Вспомнил? Нет? Я говорил о том, что дизайнер вынуждает(или совращает - как угодно) писать менее качественный код. Началось то всё с того, что я сказал - вот в скрине вижу лейблы, а дальше... впрочем что было дальше - вернись назад и почитай |
| Автор: mr.DUDA 22.5.2008, 20:06 |
| archimed7592, мир, дружба, жвачка ! nerezus, ну что решил что-нибудь по вопросу топика? |
| Автор: nerezus 22.5.2008, 20:15 | ||
Пока пишу на питоне, потом посмотрим) |
| Автор: archimed7592 22.5.2008, 20:19 | ||
Я не ярый противник дизайнера. Я это привожу лишь как пример недостатка пиксельхантинга... В прочем, если появится сделанный "по уму" дизайнер для Qt, то, возможно, я начну им пользоваться(изредка Добавлено через 1 минуту и 30 секунд |
| Автор: Kefir 23.5.2008, 16:01 | ||||||||
ну как... так же как и ты - прописываем, запускаем и смотрим что получилось В) насчёт соседних контролов - мне лично очень нравился табличный контейнер. суть то же что и в HTML таблица - нарисовал, спаны поставил, распихал по ней контролы. и в итоге ни один контрол другому мешать не будет. ну это как пример. к тому же у всякого контрола есть 1) якорь и 2) док. Якорь - это то, куда крепится контрол. То есть фактически если он где-то в углу, я ему скажу - держись за левый и верхний край парента. и при растяжении парента контрол останется на месте. если я поставлю якорь ещ и на правый край парента, то ширина контрола будет увеличиваться с растяжением парента и так далее.
так а что сдался, не сдался В) всё просто - нужен тебе мега контрола, для которого необходимо конфигить много вещей через дизайнер (ситуация когда контрол на продажу, к примеру) - придётся помучаться. если делаешь для внутреннего пользования в фирме и там не требуют полной поддержки дизайнера - не делай. то есть фактически варианта два: 1) простой, ничего не пишушь для дизайнера. тогда контрол в дизайнере показывается, всё вроде пучком, но в пропертигриде ты увидишь только вещи, унаслдованные от UserControl. Ни строки кода для дизайнера. 2) тяжёлый. пишешь полную поддержку для дизайнера, чтобы можно было менять цвета сердечек, размеры звздочек, настраивать БД подключение или ещё что-то. Тут придётся постараться.
Ну да, имхо, это мазохизм В) Не не люблю я это дело. Но ведь есть в мире мазохисты
Ну в общем в начале этого поста есть объяснение, но повторюсь. Делаю табличную раскладку, туда пихаю контролы. У таблицы если совсем обленится можно поставить авто размер для строк / рядов. Но я предпочитаю выставить размеры. Мне так нравится В) Или то что я поставлю 50% и 50% для столбцов это тоже пиксель хантинг? Если так, то да, я занимаюсь охотой на пиксели archimed7592, в общем, можно закрыть эту тему, думаю. Если тебе не нравится (по причине пиксель хантинга или ещё какой-то) делать что-то в дизайнере - делай в коде. Я рад что тебе это нравится. Однако мне удобнее делать это в дизайнере без (как мне кажется) пиксель хангинга. Я не говорю, что в дизайнере нельзя этой охотой заниматься, я говорю лишь, что никто не вынуждает тебя этим заниматься. Главное чтобы человек знал как без этой охоты можно обойтись. Надейюсь, что когда-нибудь создадут дизайнер, который тебе понравится и ты смело присоеденишься к нашему обществу горе-дизайнеров |
| Автор: nerezus 23.5.2008, 16:07 |
| Предлагаю обсудить остальные 11(!!) пунктов ) |
| Автор: Любитель 23.5.2008, 17:04 |
Ещё раз - языков для .Net много (те же Nemerle, F# Странное название пункта (для меня, по крайней мере). Можно точней? Ещё раз - это попытка сравнение или тебе сейчас реально что-то надо выбрать? Если второе - то для чего (конкретный проект, работа и пр.)? |
| Автор: nerezus 23.5.2008, 17:15 | ||||
Я считаю его лучшей моей программой, но разгласить не могу. Подробностей качательно функционала разглашать не хочу. |
| Автор: nerezus 23.5.2008, 22:22 |
| Определился. Гуй - дотнет. БД - дотнет. Виндовый софт - дотнет. Скрипты и прочее, связанное с сетью - питон. ПХП юзаю для веба. Пока заменять на питон не охота. Но я сомневаюсь, что равномерно потяну 3 абсолютно разные технологии. Надо одну выкинуть. + J2ME в эту же свалку (( |
| Автор: Fortop 23.5.2008, 23:45 |
| nerezus, Либо убьешь Питон (ПХП может нормально работать в скриптах). Либо перейдешь на Питон для Веба - не пробовал, не знаю |
| Автор: nerezus 23.5.2008, 23:48 | ||
|
| Автор: Fortop 23.5.2008, 23:50 |
| nerezus, Не очевидно. Можешь несколько примеров таких? Можно в приват. |
| Автор: nerezus 24.5.2008, 01:43 | ||
| Fortop, да зачем в приват. Что я юзал в своем последнем скрипте?
Если Класс работы с браузером можно через расширение написать, то threads в пхп впринципе невозможны. P.S. добивает еще такое в PHP:
s() - это массив, но мы не можем с него взять элемент. А почему? |
| Автор: mr.DUDA 24.5.2008, 01:49 |
| Kefir, у архимеда как бы то ни было, есть мега-довод - size policy. Он просто расставляет контейнеры и задаёт им иерархию, и всё. После чего рутовое окно выглядит при любом размере корректно - вложенные элементы сами определяют как позиционироваться, сколько отступов делать (по правилам!) и где эти отступы делать. Вот это меня, честно говоря, добило - нету такого в дотнете, ни в винформах ни в WPF А ещё, у них layout не тормозит при ресайзинге топового окна. Пример - Opera. Убийственная весч этот Qt ! |
| Автор: Kefir 24.5.2008, 09:25 |
так я и не говрю то QT плохая штука. Я лишь говорю, что винфрмы не так уж плохи как пожет показаться простому смертному с первого взгляда. Я ещё раньше писал, что не ставлю целью доказать, что винформы лучше QT (как я могу доказать то, во что сам не верю? |
| Автор: archimed7592 24.5.2008, 09:36 | ||
Простому смертному Думаю, что ты так считаешь(что SWF не так плоха), ибо большинство существующих GUI-библиотек/фреймворков(VCL, MFC, OWL, WTL и много других) построены на подобной архитектуре. Те же якори - они были в VCL ещё тогда, когда я на Delphi программировал, т.е. очень давно Да? Жаль... А я уже было записал себе в TODO "ознакомится с WPF" - заинтриговали, блин Я конечно могу ошибаться, но она вроде как ещё на Qt-3 сделана... В Qt-4 всё ещё лучше и, главное, шустрее |
| Автор: Kefir 24.5.2008, 10:07 | ||||||
Я как таковую статью не писал, а сделал парочку скринкастов, которые можно увидеть http://forum.vingrad.ru/forum/topic-206196.html. Пока что небольшой застой, ибо делаю дипломную и разбираюсь с поступлением на магистратуру. В)
нуу, сколько лет весь интерфейс на осях выполняется в виде окон? это же не значит, что они такие плохие
мерседесы разные бывают. однако мысль ясна. вот только сначала мне показалось, что в твоих постах была речь о феррари и запорожце. я как раз и попытался запорожец довести хотя бы до мерса Вообще, мне кажется, что у нас просто разные понятия о том, как должен описываться интерфейс. К тому же, раз уж заговорили о WPF - тебе он должен понравится. Во-первых, можешь описывать весь гуй XAMLом и одновременно смотреть как он будет выглядеть. |
| Автор: archimed7592 24.5.2008, 11:18 |
Пока не придумают чего-то лучшего Спасибо, посмотрю |
| Автор: Fortop 24.5.2008, 15:35 | ||||
И зачем это в СКРИПТЕ?
1 вариант. Если я правильно помню, то такая вещь есть. Не пользовался, но читал пару месяцев назад. 2 вариант.
Хотя остается логичный вопрос - зачем? Добавлено через 5 минут и 26 секунд Так с exec() я несколько переборщил Добавлено через 9 минут и 50 секунд А потому что это не массив, а функция. |
| Автор: Любитель 24.5.2008, 16:25 | ||
В WPF нет нормального лейоут-менеджера?
В VCL AFAIK они назывались алигнами. Но, конечно, это какие-то костыли - до нормальных лейоутов не тянет. |
| Автор: Kefir 24.5.2008, 16:53 |
| Так постойте... я вот сейчас глянул на эти лейоты в QT... что-то не понял я. Ну поставил грид. Определил его столбцы, строки, поставил минимальные или максимальные высоты ширины... у контролов то же самое. Я что-то так и не понял высоты QT в плане layout-ов. Объясните мне что они такого великого в себе несут? Разве грит не высчитывает лучший размер? Где я? на самом деле, а то у меня складывается такое впечатление, что я чего-то всё-таки просто не понимаю. Чем QGridLayout превосходит TableLayout из WF или Grid из WPF? А то я реально туплю. |
| Автор: nerezus 24.5.2008, 17:03 | ||||||||||
Чтобы работало. Понимаешь ли, я очень люблю, когда мой код работает. Примеры подобных нелепых вопросов: "ты дышишь, ты же не водолаз, зачем тебе дышать".
Повезет еще, что у юзверя венда(хоть криво, но сработает подход). А если никс?
Если не веришь - сделай var_dump. Понимаешь, я стремлюсь не очернить 1 вещь и не предоставить одну, как универсальную. Я ищу истину. И тут нет места слепому фанатизму! Я спокойно признаю, что моя любимая вещь в чем-то уступает другой, если будут приведены доказательства, а не буду слепо ее защищать. P.S. И напоследок.
Чтобы лучше думалось, приведу пример скрипта: ![]() Да, эта IDE - это скрипт. |
| Автор: Lazin 24.5.2008, 17:21 | ||
| в wxWidgets layout-ы появились раньше чем в Qt но это конечно к теме отношения не имеет))
наверное он имел ввиду то, что в скрипте, код не выполняется паралельно, в питоне потоки - это на самом деле эмуляция многопоточности и одновременно ресурсы разными потоками там не используются... что-бы была реальная многопоточность - нужны не потоки а процессы но это, во первых, не проблема питона, в руби к примеру то-же самое во вторых так и задумывалось |
| Автор: nerezus 24.5.2008, 17:34 |
| Lazin, естественно они не параллельны, но все равно потокобезопасности по дефолту нету, если не использовать средства платформы. Пример думаю не нужен. Тем более потоки выполняются все же параллельно, если один из потоков исполняет байткод, а другой занят сишным модулем. |
| Автор: archimed7592 24.5.2008, 17:46 |
| Kefir, покажи мне диаолог, аналогичный тому, что я показывал чуть раньше, желательно в виде солюшина, чтобы было о чём говорить Я сейчас посмотрел - ну, как минимум, я не нашёл у ваших layout'ов stretch'ев(распорок). Если интересно, как будет выглядеть тот диалог, что я выкладывал в виде кода в дизайнере, то вот, сделал жалкую попытку воспользоваться дизайнером(я им толком пользоваться не умею): ![]() |
| Автор: Lazin 24.5.2008, 18:00 | ||
в этом ты прав но, в питоне нельзя, к примеру испортить список или словарь, одновременным изменением из разных потоков, и много чего еще |
| Автор: Любитель 24.5.2008, 18:04 |
Исторически, система лейоутов ИМХО в AWT/Swing первей всего появилась. |
| Автор: Kefir 24.5.2008, 18:23 |
| archimed7592, угу, нет распорок. не пользавался, не знаю насколько удобно. но необходимости пока не чувствую... В) в общем солюшын http://infernoproject.com/jefim/WindowsFormsApplication1.zip. |
| Автор: Fortop 24.5.2008, 18:52 | ||||||
Как бы тебе объяснить Вот исходя из этих посылок, мне сложно понять, зачем она должна быть многопоточной. Впрочем бог с ней - с золотой рыбкой
А то что ты привел - это вызов функции массив ты получишь так
И проблема у тебя с перегрузкой операторов, что поддерживают далеко не все языки |
| Автор: Kefir 24.5.2008, 19:09 | ||||||
Fortop, ну ты не можешь отрицать, что
иногда так хочется, а нельзя В) мне на самом деле иногда так надоедает эту переменную заводить. особенно в мускул запросах. порой, где выборка одного поля или ещё чего
а хотелось бы от этого кретинизма избавиться:
гм. к примеру, в яваскрипте многозадачность это уже очень большая проблема. анимации друг другу постоянно мешают. меня откровенно говоря это не радует. В) вот тебе и надобность в многопоточности. |
| Автор: archimed7592 24.5.2008, 19:24 |
http://ipicture.ru/ Классный у вас лэйаут-менеджер (это тебе так, к сведению) И ещё пара тестов ваших лэйаутов на вшивость: 1. какие тебе усилия понадобятся, чтобы сгенерить такую штуку динамически(допустим, что ты не знаешь заранее сколько будет строк, сколько столбцев. 2. что будет с tabOrder'ом если ты, скажем, динамически впихнёшь строку в лэйаут и не позаботишься о нём? |
| Автор: Fortop 24.5.2008, 19:26 | ||||
| Kefir, Используй ООП. Работай с моделями, а не с функциями и запросами. в крайнем случае
Это несоответствие инструмента стоящей задаче. Сейчас на JS переносятся функции для отрисовки интерфейса. И естественно что это несколько не та, задача для которой он проектировался. С новыми браузерами и спецификациями этот вопрос должен улучшится. |
| Автор: archimed7592 24.5.2008, 19:26 | ||||
Добавлено через 1 минуту и 17 секунд
Что за спецификации такие позволят мне динамически генерировать контент на клиенте? |
| Автор: Fortop 24.5.2008, 20:00 | ||
не понял вопроса :( где должна стоять запятая? Если она там должна быть. |
| Автор: archimed7592 24.5.2008, 20:06 | ||||
Не должно быть Есть задача: генерить контент на клиенте. Есть решение: скрипт, генерящий этот контент(на JavaScript). Есть утверждение:
Есть вопрос: каким спецификациям должен начать соответсвовать браузер, чтобы задача начала решаться без JavaScript? |
| Автор: Kefir 24.5.2008, 20:47 | ||||||||
да уж В) хорош гусь. а, кстати, как поступит QT?..
гм... ну что-то вроде этого (layout немного поменяется, поля буду класть в отдельную таблицу):
Итого создаём для каждого поля надпись и текстбокс и ставим их в таблицу. Ряды добавятся автоматом. Может быть не совсем тоные названия методов, ибо пишу по памяти.
Ыыы.... вот чего не помню - того не помню. Я последний раз винформами в прошлом июне занимался, так что не могу ответить, ибо не знаю В( а при чём тут это? Я тебе как пример привёл В) А какая разница в этом случае между массивом и обьектом?
ну опять же, я привёл пример. сейчас анимациями посредством javascript пользуются очень многие, потому как очень удобно. когда ещё эти новые браузеры появятся В) мы живём настоящим. да и к тому же. да и не об этом речь. для этого он проектировался или нет - вопрос десятый. ведь он может выполнять анимации. и для того чтобы они были лучше, эффективнее, глаже и краше - очень неплохо было бы иметь многозадачность. то есть это потребность скриптового языка в многозадачности. она реально нужна. вот и всё. разве нет? |
| Автор: Fortop 24.5.2008, 21:07 | ||
Совсем без? И речь шла не о спецификациях браузера, а например о SilverLight |
| Автор: nerezus 24.5.2008, 22:25 | ||||||||||||||
А если вот так?
Портится не сама структура данных, а именно логическая связь
Разберись в терминологии? Вот тебе пример на языке, в котором нет перегрузки операторов.
Вывод ожидаемый.
P.S. по твоей терминологии то, что я называю скриптами, ты можешь считать "полноценными программами". Вот пхп для них явно не подходит.
Пока я слышал только обещания, что "оно будет", но так реально поддержки со стороны браузеров(за исключением 3х штук из всей кучи нет) |
| Автор: Lazin 24.5.2008, 22:41 |
согласен, есть там мютексы, значит они нужны я всегда считал, что потоки в питоне используются для всякой ерунды, вроде gui-я... в общем что-бы пользователь не ждал завершения чего-то длительного, буду рад узнать о другом их применении |
| Автор: Любитель 24.5.2008, 22:42 |
Налезать друг на друга - точно не позволит |
| Автор: Lazin 24.5.2008, 22:42 |
| зы хочу всем напомнить, что речь идет о 2х платформах, Python и .NET |
| Автор: Любитель 24.5.2008, 22:47 |
| Lazin, дык мы типа это... PyQt защищаем. От ВинФормз ЗЫ А вот ПХП и яваскрипт - фтопку!!! |
| Автор: Lazin 24.5.2008, 22:48 |
| pps многие люди не пишут gui приложения и им глубоко перпендикулярно наличие или отсутствие каких то гуевых фич |
| Автор: Fortop 24.5.2008, 22:49 | ||||||||||
Яйцо не курица, сколько var_dump() ты не делай. Держи, и проверяй.
У тебя есть другое название? Озвучь. оператор [] в PHP может применяться только к структурам данных, которые содержат массивы, но никак не к вызовам функций. И в моем примере, это прекрасно видно.
Пользуйся на здоровье
Ок |
| Автор: Lazin 24.5.2008, 22:53 |
это-же ортогональные вещи, как их сравнивать? вот кстати интересная http://www.pyobject.ru/blog/post/pyqt-unpythonic-gui на тему Добавлено через 40 секунд приехали |
| Автор: Любитель 24.5.2008, 23:17 |
Это две гуёвые либы (одна для питона, другая для дотНета). Вроде сабж - Питон vs .Net |
| Автор: Lazin 24.5.2008, 23:30 |
| WF - это неотемлемая часть фреймверка, который называется .NET Qt - сторонняя библиотека, которая имеет весьма слабое отношение к питону |
| Автор: nerezus 24.5.2008, 23:40 | ||||||||||
Чтобы не было гемора с асинхронными сокетами.
|
| Автор: Любитель 25.5.2008, 00:46 | ||
Речь про PyQt - один из типичных вариантов (ИМХО - лучший вариант) гуев для питона. |
| Автор: Kefir 25.5.2008, 01:06 | ||
хосспади, от привязались. смутно помню, что где-то была какая-то пимпочка а-ля авто прокрутка. я уж не помню точно. нет уж, это я винформс пытаюсь оградить от QTшников |
| Автор: Любитель 25.5.2008, 01:52 | ||
В ВинФормз нормальных лейоут-менеджером нет. Всё делается в стиле VCL (ИМХО такой стиль родился там). В WPF - я думал (уж не знаю почему), что должны быть нормальные лейоуты. Не знаю - не смотрел. Привязываться никто не собирался - вопрос был твой (про поведение куте) ;) |
| Автор: Fortop 25.5.2008, 05:12 |
Потому что тебе были нужны полноценные приложения, а не скрипты Это у тебя оба вызова распечатали? Если нет, то твое ЧТД совсем не к месту А про перегрузку операторов все же рекомендую почитать |
| Автор: nerezus 25.5.2008, 08:02 | ||||||||||
Вот:
А теперь ты может все-таки ответишь, чем эта IDE не полноценное приложение? скриншот IDE(среда разработки, если что): ![]()
Если ты не заметил, то в прошлом примере я тебе специально привел код на жабе, где перегрузка впринципе невозможна. |
| Автор: Fortop 25.5.2008, 13:08 | ||||
Ты серьезно, не отличаешь результат от действия?
Начнем с того что echo это даже не фукнция, а языковой конструкт. Да бог с ним. Про типизацию в Java, которую ты тупо опустил, и которая и разрешает тебе заниматься извращениями только там, где можно.... Мы то же промолчим. Но неужели ты наивно полагаешь, что для того чтобы оператор мог быть применен к чему-либо, операнд не должен быть поддерживаемого им типа? И как еще называется сие таинство, когда один и тот же оператор позволяет совершать действия с разными типами данных? Нет, я конечно понимаю, что великий Python, просто не дает возможности задуматься о том, как это действительно происходит. Но все же. Может подумать? Массив не появляется из ниоткуда, он является результатом вызова функции. Сам результат функции у тебя не предопределен, в отличии от той же Java. Задача PHP быстрый старт, короткая работа и финиш. Именно то, что нужно для веб. Именно поэтому синтаксический анализатор в PHP упрощен - функция просто отдает результат, а оператор не перегружен и [] работает только с структурами данных. |
| Автор: nerezus 25.5.2008, 13:23 | ||||||||
функция - это s. s() - уже результат.
Есть она в других языках, но нам пока мы обсуждаем пхп, на это должно быть монопенисуально.
Но массивы в пхп поддерживают []. Если ты не веришь, что s() имеет тип массива - сделай var_dump(s()). И именно к s()(что есть array) я применяю[]. Реально, сделай var_dump() и проверь.
|
| Автор: Fortop 25.5.2008, 14:59 | ||||||||||
| nerezus, ты меня удивляешь :( очень неприятно удивляешь. Нет, я конечно понимаю, что я не профессиональный программист, а так... побелить покрасить. Но я, во всяком случае, понимаю границы своих знаний. Но, ты ведь претендуешь на звание программиста. Будь добр - разбирайся в том с чем ты работаешь.
Свое определение "скрипта" я приводил несколькими страницами ранее. Ты уверен, что IDE это скрипт?
Функции в PHP не типизированы. Ты этого не знал? Вместо вот этой... гм, как бы так помягче сказать.... О, придумал! Не лажи, а конструкции.
Поработай с вот такой
И сообщи какого она типа. Массив, целоцисленная или вообще объект. Да, теперь уже уверен. Объясняю на пальцах. s - функция, s() - операция вызова/обращения к функции. и лишь то, что она вернет - является результатом. Оператор [] в PHP не перегружен для работы напрямую с вызовами функций.
Гм, ты уверен, что перегрузка, это только то, что делаешь лично ты? А разработчики языков не могли заранее перегрузить некоторые операторы? |
| Автор: nerezus 25.5.2008, 15:46 | ||||||||||||||||||||
Что такое скрипт можно прочитать тут: http://en.wikipedia.org/wiki/Scripting_language
Вполне подходит под определение ;)
Поэтому [] должно было бы бросить ошибку когда тип не массив. А оно бросает всегда. Даже когда массив.
Ну да, все они говноязыки: C, C++, C#, Java, Python и десятки прочих. А PHP истинно правильный язык! Если что-то не работает, то это так и должно быть, а если это "что-то" работает везде - то тогда все остальные извращенцы. Ты это хочешь сказать? Вот тебе:
Добавлено через 3 минуты и 50 секунд В том же C типизация слабая. Как и в пхп. В том же питоне типизация динамическая. Как и в пхп. И они(как и другие языки с подобной типизацией) позволяют брать значение по индексу у массива всегда. |
| Автор: source777 25.5.2008, 15:52 | ||||
тут не лэйаут-менеджер, а Kefir виноват, что минимальные размеры окна не задал... А так с динамической компоновкой в .NET никаких проблем, особенно в WPF: Вот вам XAML разметка, создающее окно со столбиком из надписей, полей ввода и кнопок и двумя кнопками внизу. При уменьшении размеров окна появляется вертикальная полоса прокрутки и горизонтальный ресайз, вплоть до того момента пока размеры окна не достигнут минимально допустимых... Так что модель компоновки QT абсолютно ничем не лучше, более того MS её подчистую слизала с QT и внесла собственные дополнения и улучшения...
P.S. При желании всё то же самое можно сделать кодом, который будет концептуально похож на приводимые выше для QT - то же создание контейнеров, то же размещение элементов управления по ним... Однако наметилось разделение труда: интерфейс рисуют дизайнеры, а программисты пишут код и это правильно, ибо не гоже программистам такими мелочами себя отвлекать как рисование интерфейсов будь то кодом, будь то программой-дизайнером... Поэтому я лично в шоке, что вы тему выбора платформы для программиста свели к теме - где проще кнопочки по формам расставлять... P.P.S. По первоначальной теме: я лично не понимаю почему автору надо выбрать что-то одно? Надо программировать с использованием языка/платформы, а не под конкретный язык/платформу... |
| Автор: nerezus 25.5.2008, 15:55 | ||||||
В пхп и питоне во время исполнения это проверяется. В сишарпе, жабе, C, C++ - на этапе компиляции. На примере C: там вообще [] - не оператор по сути, а средство для рассчета адреса. Но оно работает! Потому что по логике должно. Это начало 70х годов, естественно никаких терминов вроде перегрузки тогда не было. Теперь вопрос для пхп: Ты говоришь, что мы не знаем заранее, какого типа результат и поэтому не можем по нему сделать[]. Тогда почему работает код(мы ведь не знаем тип a, а вдруг оно не массив?):
Добавлено через 2 минуты и 14 секунд
|
| Автор: source777 25.5.2008, 16:06 | ||
| nerezus, какой смысл обсуждать PHP в данной теме? Этот язык изначально разрабатывался для создания домашних страничек и он не далеко ушёл от первоначальной цели: несогласованная библиотека функций, недоразвитое ООП, отсутствие нормальной работы с Unicode и многое другое - говорят сами за себя, да кто-то сейчас вспомнит про PHP6, этим людям стоит сравнить в таком случае PHP6 с Perl6 и Python3, хотя какой смысл сравнивать то чего ещё нет? P.S. Python несомненно заслуживает внимания гораздо больше, чем PHP, но мне лично больше нравится Ruby... Добавлено через 1 минуту и 38 секунд
|
| Автор: nerezus 25.5.2008, 16:18 |
| Приоритет операторов: вызов функции имеет более высокий приоритет, чем получение элемента. Поэтому сначала вызывается функция и ее результат будет учавствовать в выражении. После этого от полученного значения(которое массив) берется элемент. Вот причина, по которой этот код должен работать. |
| Автор: Kefir 25.5.2008, 16:20 | ||
Логика логикой, а .НЕТ .НЕТ-ом
ну, Кефир виноват, собственно, в том, что память у него уже не та |
| Автор: Fortop 25.5.2008, 16:32 | ||||||
Потому что вертолет...
Сколько раз мне еще это повторить? А чем ты занимался? Ты пытаешься доказать, что функция и ее вызов это массив. Это не так. А у вызова () функции? Нет? Какая досада... Я знаю, все люди тупят, и я тоже бывает туплю. Но скажи мне, чем я могу тебе помочь? Чтобы ты понял, что static int[] s() Вот этим кодом ты разрешаешь использовать [] для вызовов этой функции. Ну есть в анализаторе Python обработка для извращенных случаев. Понимаешь ли. Если PHP, разрешает делать вот так
То это не значит, что это хорошо и правильно. Мда, ты явную типизацию от неявной отличить не можешь :( Добавлено через 5 минут и 32 секунды Это исключительно твое хочу.
Не совсем так про ушел Так что это не совсем язык даже |
| Автор: Любитель 25.5.2008, 21:09 | ||||||
Ну, скажем минимальные размеры кнопки зависят от её текста. Сайз-хинты определяют виджеты в куте сами для себя. Впрочем - хватит про гуй уже
No comments... А почему это извращённый случай?! Неужели тебе не кажется, что так писать естественно? Почему ПХП прав, а всех остальных - фтопку? |
| Автор: Fortop 25.5.2008, 21:19 |
| Любитель, PHP прав? В отличии от Java, C# - PHP это парсер текста стремительно выросший в язык. В процессе роста имеется большая куча мусора. Часто дублирование функциональности и многое не "так", как в том же C, Perl. Я всего лишь пытался объяснить человеку почему оператор [] не работает в PHP так, как ему хочется Добавлено @ 21:22 Потому что в отличии от языков с явной типизацией перегружать такие конструкции в языках с неявной - это создавать дополнительное поле для ошибок. Которое и так достаточно обширно. Я приводил пример с вызовом функции через переменную. Гибко - да. Но нужно ли? Едва ли... |
| Автор: nerezus 25.5.2008, 21:32 | ||||||
Я до этого думал, что ты знаешь теорию, но просто меня не понимаешь, потому что ты упрямый. А оказалось, что и теории не знаешь. вот тут можно почитать: http://en.wikipedia.org/wiki/Type_system Типизация бывает weak или strong по критерию type strength. Типизация бывает static или dynamic по критерию type checking. Вобщем читай ссылку выше и просвещайся. PHP имеет weak dynamic типизацию. Это факт. ![]() Добавлено через 3 минуты и 42 секунды
Приоритет операторов: вызов функции имеет более высокий приоритет, чем получение элемента. Поэтому сначала вызывается функция и ее результат будет учавствовать в выражении. После этого от полученного значения(которое массив) берется элемент. От массива(результата функции). |
| Автор: Lazin 25.5.2008, 21:43 |
| казалось бы, причем здесь ПХП зы YouTube сделан на питоне |
| Автор: Fortop 25.5.2008, 22:17 |
| nerezus, умиляешь Я рад за тебя
Чтобы ты понимал. Явная типизация - static. Неявная типизация - dynamic. Что такое "duck typing" объяснять не буду, поскольку ты наглядно продемонстрировал это ранее. Твоя проблема в том, что ты следуешь фразе - "если это выглядит как утка, ходит как утка, то мы назовем это уткой" Именно поэтому для тебя s() - это массив. Ты за деревом не видишь леса. Выводы сам сделаешь? Или как? Wikipedia, Facebook на PHP, MySpaces был на ColdFusion, но к чему это? Для того же PHP я видел реализации программ использующих GTK+. Но это бред. |
| Автор: Любитель 25.5.2008, 22:18 | ||
Да причём тут перегрузка?! Lazin, хватит следить за порядком? |
| Автор: Fortop 25.5.2008, 22:19 | ||
И таки да, я упрямый. Но ошибки признавать не боюсь. Добавлено через 2 минуты и 25 секунд Ты тоже считаешь что
Будут транслироваться в идентичный код? |
| Автор: Kefir 25.5.2008, 22:50 |
| Fortop, nerezus, вот вы тут пурги понагнали В) типизированный-нетипизированный. возвращает или нет. очень интересно смотреть как два человека, которые любят разную жвачку спорят о том какие красители использовались при изготовлении этих жвачек один говорит, что по логике хорошо бы дабы можно было s()[0] делать, а другой говорит - нет, в пхп такого нельзя! причём первый знает что в пхп этого нет, а второй не сможет отрицать, что от такой возможности пхп по крайней мере не ухудшится В) и всё равно в дело идёт всё - скрытый сарказм, маленькие издёвки, нравоучения и даже (о ужас!) ВИКИПЕДИЯ! молодые люди... вы куда забрались? |
| Автор: Fortop 25.5.2008, 22:54 |
| Kefir, Форум -> Разное -> Разные вопросы -> Религиозные войны Не мешай ;) |
| Автор: nerezus 25.5.2008, 23:01 | ||
|
| Автор: Fortop 25.5.2008, 23:25 |
| nerezus, Расслабся Выше по топику, там где ты сравнивал типизацию C и PHP, мне лень искать |
| Автор: Любитель 25.5.2008, 23:53 | ||||||
Я считаю, что перегрузка тут не при чём. Даже не то, что считаю - это факт
работает, а вот это нет:
Логично? ИМХО нет. Добавлено через 1 минуту и 6 секунд
Там была два сравнения. С C - по поводу строгости, с питоном - по поводу динамичности. |
| Автор: Fortop 26.5.2008, 00:13 | ||
Это не аргумент Это тоже не аргумент |
| Автор: archimed7592 26.5.2008, 00:13 | ||
Ммм? А мне кажется, что виновата WF в том, что не позаботилась об этом. Странная какая-то либа в которой приходится постоянно руками выставлять "док"(он что, сам выставляться не в состоянии?). Я понимаю, что всё это мелочи, но вот из этих мелочей и складывается мнение о библиотеке(по крайней мере моё). Pixel hunting идёт в массы Ладно, насчёт Qt спорить перестаю - не хочу повторять по сто раз одно и то же(pixel hunting is evil, pixel hunting is evil, pixel hunting is evil, pixel hunting is evil, pixel hunting is evil, pixel hunting is evil, evil, evil, evil, evil, evil, evil, evil, evil, evil, evil, evil). |
| Автор: nerezus 26.5.2008, 07:48 | ||||
Я привел пример, что в других языках это работает. Причем с такими же частными видами типизации. Посмотри примеры )
|
| Автор: mr.DUDA 26.5.2008, 09:10 |
| По поводу PHP и s()[] - насколько мне помнится, в случае если вернут не массив то [] будет вести себя так: если это объект, возвращать поля объекта по индексу, если элементарная переменная, то [0] вернёт её же, а остальные индексы вернут null. Это типа пять копеек в копилку сего увлекательного холивара. |
| Автор: likehood 26.5.2008, 10:21 | ||
Вот мои пять копеек в спор о перегрузке вызова функций в PHP. Сразу говорю, что в PHP не силен, но такой код, по идее, должен работать:
если этот код работает, по получается, что в php есть "перегрузка" операции + для вызовов функций (в терминах Fortopа). что тогда мешает "перегрузить" операцию []? |
| Автор: Shaggie 26.5.2008, 11:13 |
| Обожаю читать религиозные войны! В теме Python vs .NET люди всерьёз обсуждают перезрузку операций в PHP. |
| Автор: Любитель 26.5.2008, 14:20 | ||
|
| Автор: source777 26.5.2008, 15:34 |
| Во-первых, в этой разметке нет ни одного размера в пикселях(px), во-вторых ты отступы вообще не задаёшь что ли? с какого боку тут Pixel hunting? Width и Heigth можно убрать, их дизайнер просто по умолчанию втыкивает, чтобы на превью компоненты удобнее бросать было... |
| Автор: JackYF 26.5.2008, 18:11 | ||
а выкинуть их (из дизайнера) можно? или ручками? |
| Автор: source777 26.5.2008, 19:31 |
| если делать кодом, как любит archimed7592, то их не будет по умолчанию. А дизайнером без них пользоваться не получиться, ибо сложно Drag`n`Drop`ить контрол на форму нулевого размера, а именно такой размер у неё будет, если нет содержимого или размер не задан явно... впрочем не вижу в этом ничего страшного, когда все контролы расставлены можно и руками убрать при необходимости... |
| Автор: Fortop 26.5.2008, 21:15 | ||||
Задай этот вопрос разработчикам Надо сказать отвратительно разбираешься в моих терминах ;) Но как это звучит - мне нравится ;) Так и вижу - афиша, и большими буквами "Приглашаем посетить авторский курс терминов Fortopa"
Это тебе так хочется, чтобы так происходило |
| Автор: nerezus 26.5.2008, 21:30 | ||||
Вот пример: f1()->f2()->f3()->f4()->f5() - по логике Fortop здесь перегружен у функции метод метода метода метода? )) |
| Автор: Void 27.5.2008, 16:44 | ||
Посмотрел я.
Вряд ли упрощение анализатора, потому что поменять грамматику так, чтобы слева от '[' dim_offset ']' стоял нетерминал выражения, ничего не стоит. И вычислительную сложность разбора это не усложнит, по крайней мере измеримо. Возможно, упрощение интерпретатора. Но скорее всего, просто тяжкое наследие прошлого. Есть ещё один более-менее известный язык с таким ограничением — оригинальный Виртовский Паскаль. Только все нормальные реализации от него избавились давным давно. Так что можно считать авторов PHP последователями Вирта Ну и вот, значит, про перегрузку. Перегрузка операторов в общепринятом понимании этого словосочетания означает разное поведение операторов в зависимости от типа операндов. В PHP этот вопрос решается на уровне синтаксического анализатора, где никакими типами не пахнет. Называйте сию замечательную особенность языка как-нибудь по другому. |
| Автор: nerezus 1.6.2008, 21:28 |
| Оооо, я не рассматривал джаву, т.к. она не конкурировала с ними по Look-n-feel Однако я упустил 2 вещи... SWT и Qt Jambi Теперь я снова в сомнениях ) |
| Автор: Любитель 2.6.2008, 00:00 |
| Если тебя шарп не устраивает по языковам фишкам, то ява - ИМХО там всё слишком строго |
| Автор: nginx 7.2.2010, 23:23 | ||||||||
C# - не для этого был создан, да и не люблю функциональная, как каша смотрится Правда, если очень хочется можешь посмотреть в сторону F# llvm, а потом почему Моно не предлогать? У Питона бедновато с GUI , с визуальными стилями очень бедно и некрасиво, а начинать сидеть это очень долго и нудно, чтобы добиться того же эффекта, что в .NET можно получить за несколько минут (макс. 5 мин.), Поэтому лучше сразу общаться с Window X напрямую и на СИ, тем более ты сам говорил, что компилер СИ от Интела компилит более оптимизированные приложения, чем на ASM даже. А возни, чтобы добиться того же уровня качество твоего GUI-приложения будет столько же.
А вот тут , я поспорю, ты забыл про PowerShell и тут он тоже может побороться с Питоном, тоже несколько строк для веб-сервера и многопоточного сканнера, юзает с лекгостью дотНЕТовские либы и полностью интрегерирован с дотНЕТом и твоими дотНЕТ приложениями.
Ну , IronPython и начал свою историю, как студенческий, что с него взять? Точно так же, как IronRuby и Phalanger А про Сильверлайт , мы с тобой уже давно беседовали, и СЛ уже полностью догнал, и моментами обогнал Флэш по возможностям, тюкать СЛ можно только за распространнимость и кросс-платформенность только насегодня.
Потому что, нужно было набирать win32 c++
MonoTouch - for iPhone Mono + Erlang - for Sony Erickson Mono - для Андроида еще будет (если уже нет) Моно есть для PS3, Nintendo Wii , где нет Питона |
| Автор: nerezus 7.2.2010, 23:42 | ||||||||||||
|
| Автор: Любитель 7.2.2010, 23:47 |
Десктопный MSDN - УГ. В эпоху интернета на каждом шагу - ставить локально МСДН как-то даже стыдно... |
| Автор: nginx 7.2.2010, 23:49 | ||||||
http://social.msdn.microsoft.com/search/en-us?query=win32+c%2b%3d Ну и в чем проблемы?
богаче в плане кучи небогатых либ, кроме qt?
Update the first message, because it's not just first, it looks like "news", you ought to update it!
На тот момент PowerShell уже существовал, и можно было точно так же с легкостью сделать в 4-е строчки! |
| Автор: nerezus 7.2.2010, 23:59 | ||||||||
|
| Автор: nginx 8.2.2010, 00:04 | ||||
Да, я не понимаю, потому что это ошибка, искореняй ее! Да-а, а то твой первый месс, как приговор смотриться, глаза мои режет этот приговор.
"Кроме" - оно и значит, что кроме Qt нет серьезных либ. Попробуй мне создать интерференцию мех. волн в на основе своих либ, причем УСЛОВИЕ!!! Красота на уровне Compiz. |
| Автор: nerezus 8.2.2010, 01:00 | ||||||
|
| Автор: nginx 8.2.2010, 01:06 |
именно ошибка, юзать "десктопную версию справочника" - это натуральная ошибка собственно не мне учить "матчасть", да и ее тут и нет 15 минут, 10 баксов, хотя бы открыть Вики соотв. раздел ) |
| Автор: nerezus 8.2.2010, 01:18 | ||||
|
| Автор: nginx 8.2.2010, 01:22 | ||||
нет, перевертываешь мои слова Ты написал:
Что мне изучать? Как искать инфу по нативному программированию в msdn? Ссылку я тебе привел выше, и написал "в чем проблема"? Ты описал ту проблему, который нет И я очень сомневаюсь, что она присутвует в локальной помощи, которая берет ту же инфу с сервера, и только не берет инфу, когда и-нета нет, а посколько ты всегда в Нете, то и хорошо у тебя работает локальная справка, там такой же удобный поиск, в чем проблема? Не нада перевертывать мои слова |
| Автор: nerezus 8.2.2010, 01:32 |
![]() Фильтры вверху. Особеннно на первый и пятый результат обрати внимание. По поводу использования онлайн-версии повсеместно, то не надо думать, что за МКАДом нет жизни ) Особенно пару лет назад. |
| Автор: Любитель 8.2.2010, 02:02 | ||
Про пару лет назад - согласен. Было тяжёлое время 1. Тормозной ие-шный браузер (инициализация вкладки МСДН-а тормозит вечно также, как и в ие, поэтому думаю, что виноват он). 2. Отвратительный поиск. Мало того, что у меня онлайновый поиск отработает быстрее, так ещё и находит он ерунду какую-то. Реально пользоваться только "index" - если знаешь точно, что нужно. А если "как сделать ...." - то... Лично моё мнение. В мсдн хорошая сама документация (данные), но поиск и каталогизация - ужасны. Гуглом проще/лучше/удобнее. |
| Автор: nerezus 8.2.2010, 02:08 | ||
Но ты все еще не понял. За МКАДом с инетом проблемы и сейчас. Или ты наивно полагаешь, что студент с универского компа(иначе бы я и не трогал системное) может получить доступ к вебу?) |
| Автор: nginx 8.2.2010, 02:16 |
| присваивание не является выражениям я хочу сделать (Foo | = []). Append (42), а не Foo | = []; foo.append (42) и т.д. Вай нот ин Пайтон? |
| Автор: Любитель 8.2.2010, 13:56 | ||
Ээ.. я не понимаю, что значит "за МКАДом". В нашем жалком ВГУ инет есть |
| Автор: nerezus 8.2.2010, 14:18 |
| Любитель, окей. У нас в городе 1.1млн человек в 3 самых крупных универах нет интернета для студентов. В остальных даже хз. Расстояние до Москвы ровно 1 тысяча км. Это вы на расстоянии 500км от Москвы с жиру беситесь |
| Автор: nginx 8.2.2010, 14:21 |
Это же как же, тогда бесяться москвичи и люди , проживающее в ближайшем подмосковье |
| Автор: nerezus 8.2.2010, 15:48 | ||
|
| Автор: Любитель 8.2.2010, 16:52 |
| nerezus, мы 4 года назад не знали слова "анлим" |