abcd0x00 в общем-то все как и у худождников - насколько мне известно, в общеобразовательной школе и на первых классах в художке многие рисуют гуашью, а потом уже "взрослыми" красками типа акварели или масла. Художники не пишут гуашью, потому что она недостаточно гибкая в цветовом плане, но никому же не приходит в голову учить детей писать сразу маслом.
> Там даже геометрическую прогрессию не выведешь, а это школьный уровень. К тому же он приучает думать неповоротливыми конструкциями.
ну я смотрю вы любитель все сделать в заголовке цикла ;). Не знаю, мы на первом курсе 1000 и 1 раз написали все возможные прогрессии на Паскале, все было нормально. Имея нормальный индекс цикла, студент всегда имеет под рукой номер элемента последовательности, и ни с чем его не путает. Этот номер элемента и сам по себе нередко полезен, например чтобы запомнить прогрессию в map-у.
> Паскаль - хреновый язык.
> Пустая трата времени, так как всё равно будешь переходить на нормальный язык.
Для написания современного продакшн-кода - пожалуй да. Для обучения - пожалуй нет. Да, придется учить еще хотя бы один язык. Повторюсь, я считаю что НЕВОЗМОЖНО один и тот же язык использовать и для обучения и для работы. Язык для обучения НЕ ДОЛЖЕН БЫТЬ слишком гибким, в нем должны быть жесткие правила, чтобы привить студенту паттерны. Я не знаю, может быть сейчас студенты поумнее стали, но лично я видел что полгруппы не могли и с Паскалем справиться в свое время. Да и я сам рад, что начал не с Си - мне кажется у меня в голове был бы бардак после него.
Александр Права на C:\Qt и C:\Windows наверняка у вас различаются. Когда вы устанавливали Qt, инсталлер наверняка запускался с правами админа и получил возможность создать папку на системном диске, и дал этой папке права на доступ обычному пользователю. Хотя, надо сказать что на 7-ке я у себя могу создать папку на системном диске без каких-либо проблем. Вот создать подпапку в Program Files или Windows уже потребует повышения привелегий.
Станислав Силин
> Мне кажится, что С#+WPF-у еще очень-очень далеко до связки Qt+QML
Как вам сказать... Фишка в том, что когда WPF еще появился, а это было аж в 2006-2007 году, то QML был в лучшем случае только в планах. И тогда WPF реально предоставлял то, чего не было ни на десктопе, ни в вебе. Но Qt развивался, а WPF почти не двигался, и по сей день в нем примерно тот же набор возможностей, что и на момент появления. Поэтому сейчас да, Qt уже догнал и перегнал WPF. Не могу согласиться, что WPF-у очень-очень далеко до Qt - архитектурно он предоставляет примерно те же возможности, что и QML (разметку, биндинги, стилизацию), другое дело что учить его значительно сложнее и многие просто не добираются до всех его возможностей.. Это да, это проблема, порог входа в WPF выше, чем хотелось бы.
Так что кроссплатформенность это пожалуй главная киллер-фича Qt. Однако, тут уже надо смотреть требования бизнеса - многим, кто пишет всякие корпоративные программки для банков и страховых фирм, кроссплатформенность нафиг не сдалась, т.к. в enterprise на декстопе до сих пор влавствует винда, а вот WPF как раз и создавался чтобы быстро писать такие программки. И тут выходят на ринг C++ vs C#, и вы сидите и думаете - итак, на дворе 2015 год. Что нам важнее? Сэкономить на специалистах (иногда C++ прогеров днем с огнем не сыщешь) или все-таки получить кроссплатформенность?
abcd0x00 Си в принципе тоже вариант, хотя типизация в нем послабее, а она очень важна когда начинаешь изучать программирование, иначе такая каша потом начинается.. А классический for как раз в паскале, когда указываешь диапазон индексов, и дельту изменения индекса. Си-шный фор конечно на порядок более гибкий, но и понять его намного сложнее, чем паскалевский. Когда человек начинает с алгоритмов управления черепашками, ему эта гибкость совершенно ни к чему. В бейские кстати почти такой же фор, как и в паскале. Вы можете справедливо заявить, что бейсику тоже место на свалке истории, но в том то и фишка, что многие современные языки слишком гибкие и в них слишком много возможностей для начинающего программиста. Собственно, как в том же C++. Поэтому я считаю что некоторые классические языки должны остаться, пусть только как учебные. Невозможно выучить один язык для учебы и работы: либо будет очень сложно учиться (если начинать с C++, т.к. слишком много возможностей), либо очень сложно работать (если выучить только паскаль и бейсик, т.к. языки недостаточно гибкие по современным меркам). В общем, тренируйтесь на кошках, это нормально.
littleguga ну это слишком общий вопрос, зависит от того, что вы собираетесь сделать в основном таске и по его завершению. Тут правильно/не правильно может быть только работа с GUI-потоком. Еще некоторые любят явно создавать таск по изменению UI в конце кода основного таска, но тут как раз лучше ваш вариант. Если вы приведете другой пример, то его посмотрим отдельно.
Среда сегодня, специалисты днем на работе, что ж вы хотите?. Многие только дома вечером листают и хабр и тостер, ну или в обед, если повезет. Некоторые вопросы по неделе висят, и ответы находятся, когда нужные люди добираются.
> Некрофилию прекратить
> в зоофилии не силен
Вы весьма категоричны. Ладно Винда, чем Фряха-то не угодила?)) Если есть отрицательный опыт, буду рад услышать.
Exemption Если вам нужен только буфер в памяти, вы можете взять Bitmap, сделать LockBits и работать с массивом пикселей в unsafe-коде - сможете реализовать отрисовку любого двумерного примитива. После этого битмап можно поместить в контрол Image или нарисовать еще где-то. Если все таки вам нужно использовать что-то из WinAPI, напишите что конкретно, т.к. сейчас я необходимости в этом не вижу.
Exemption ясно, предположение оправдалось) (такое полуадекватное требование может быть только в задании). А что именно нужно использовать из WinAPI? Только SetDIBitsToDevice? или что-то еще? Самостоятельно реализовать рисование - значит реализовать алгоритм рисования линии и заливки, или использовать для этого возможности GDI?
Michael Bel
while (people.Read())
{
for (int i = 0; i < people.FieldCount; i++)
{
object getname = people[i];
Console.Write(getname);
Console.Write(",");
}
Console.WriteLine();
}