LINUX.ORG.RU

Переход на Linux: взгляд разработчика под Windows (перевод)

 , , ,


0

0

Неслабо digg-нутая статья о том, как человек перевёл свою разработку с Windows на Linux.

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

Подробности.

>>> Оригинал статьи

Ответ на: комментарий от Bohtvaroh

>Благодаря pkg-config меньше срача в /usr/include, не уверен, что разработчики дистрибутивов вообще имеют к этому отношение.

o_O... еще как имеют. Шо называется по самые фумидоры. На Мандриве с pkg-config полный ахтунг. На дебиане майнтенер пакета тикля так отжег с расположением хедеров, шо пришлось отдельный костыль дописывать для сборки, "истинно дебианский". Так что и в опенсурсе тоже хватает любителей криатиффа :)

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

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

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

Так этим и занимается "#pragma omp..."

Распараллеливается внешний цикл. В силу того, что данные упорядочены по столбцам (как в фортране) каждый процессор работает со своим локальным участком памяти, все переменные локальны или доступны только для чтения, единственное, что потребовалось -- объявить внутреннюю переменную цикла локальной "... private(abspos)"

Ускорение -- 6.5 раз на 8 ядерной машине (это при том, что не вся программа распараллелена, только критические участки) при 16 потоках.

annoynimous ★★★★★
()

А еще в бесплатном Visual C++ (и во всех платных, за исключением самого дорогого Team System) отсутствует поддержка анализа code coverage. Еще одна причина перевести разработку на GCC.

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

> цена студии - день работы программера, смешно.

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

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

Проблема со студией не в том, что ее дорого купить, а в том, что платить надо постоянно. Каждые 2-3 года требуется вливание.

В одной из компаний, в которой я работал, еще 2 года назад громадный проект был на Visual C++ 6. Visual C++ 7 (тоже динозавр) был куплен, и на него-то они и перешли. Просто потому, что деньги за сотню+ лицензий были уплачены. При этом маразм ситуации понимали почти все.

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

> цена студии - день работы программера, смешно.

Уважаемый школьник, VS для коммерсов стоит примерно в 30 раз больше чем по академической лицензии, которая используется в твоей школе или ПТУ! :-)

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

хм, а в университетах бесплатно. Это приманка для будущих developers!

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

RedPossum ★★★★★
()

Молодец мужик, развеял глупые мифы.

>Судя по написанному, автора либо очень крепко достала предыдущая его ОС, либо он осознанно далеко не беспристрастен.

Не заметил ничего такого.

P.S. Перевод читается тяжеловато

Demon37 ★★★★
()

>для разработки интерфейса с пользователем

у-ля-ля... какой слог-то "заграничный" :)

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

>если код написан правильно, он компилилируется и в g++, и в VS.

бгг... ну чисто теоретически - да, а на практике даже если код написан правильно и скомпилировался - не факт что он будет работать одинаково и вообще работать... проверено электрониками (с) :)

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

>Qt стал бы пользоваться любой хоть немного адекватный человек, если бы в его задачи входил GUI и ему надо было бы использовать С++.

Не факт. Во-первых дорого для коммерческих приложений, а во-вторых глюкаво местами.

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

>>Python

>Это был не настоящий вендузятник. У настоящего были бы батфайлы с windows(r) script host(tm) плавно перетекающие в powershell(tm).

ну дот нет же, дот нет... и до диез :)

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

> цена Visual Studio Pro 2008 Win32 около 1k$

хм... любимый Qt стоит около 2k$ на платформу (по крайней мере последний раз так было), тоже не кисло...

>годовой доход на кодинге 250-300k$

вполне реально, к примеру, в ойро..

shty ★★★★★
()

И вообще, не понимаю плач ярославны. Компилятор в visual studio express точно такой же как и в pro. Если использовать в командной строке идеологически ничем не отличается по использованию от gcc того же.

shty ★★★★★
()

>>Но, к сожалению, я не мог установить свою Studio на эту ОС - вопрос о разработке на XP и тестировании на Vista даже не стоял.

wtf?! o.O

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

>>ну дот нет же, дот нет... и до диез :)

И дот да, коллега. :)

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

>>по сабжу: долго привыкал после студии к g++, компилированию из консоли; к тому что внизу нет окошечка, которое мне рассказывает, где же я наложал. зы студота таки

Что значит нет? Еще как есть.

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

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

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

Ссылки на слор это диагноз для ссылающегося. Такого сборища говна и говноедов рунет сроду не видел.

Hokum ☆☆☆☆
()
Ответ на: комментарий от theos

>во-первых дорого для коммерческих приложений >Qt - _L_GPL

и что? там специальное исключение для комерческих разработчиков :-) хочешь на QT зарабатывать бабло - будь доб делиться или кодом или баблом.

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

> и что? там специальное исключение для комерческих разработчиков :-) хочешь на QT зарабатывать бабло - будь доб делиться или кодом или баблом.

Это бред. Где вы такое прочитали?

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

> и что? там специальное исключение для комерческих разработчиков :-) хочешь на QT зарабатывать бабло - будь доб делиться или кодом или баблом.

Отстали от жизни. Это раньше QT имел две лицензии - GPL и коммерческую. ИМХО это был серьезный минус перед...некоторыми другими тулкитами =)
Сейчас QT - LGPL.

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

>На винде почему-то принято MFC использовать.

Я про адекватных людей говорю. При наличии Qt юзать MFC - идиотизм.

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

> Тоже самое только наоборот и более аргументированное

Не увидел никаких аргументов, в целом - студенческий треп. Автор не смог понять ни зачем нужен Open Source, ни как его использовать. В целом - бесполезная статья на тему: 'Я не понял, а потому - фигня'.

HappySquirrel
()

Вполне адекватно описан процесс перехода. Я где-то год назад тоже переходил с windows на linux и переводил свой c++ проект. Расчетные модули портировал еще находясь в винде, openGL часть так же менять не пришлось. WinAPI части дописывать(небходимо было, чтобы оно осталось запускаемым под windows) было наиболее геморойно. К счастью, интерфейс у меня примитивен.

Правда, причины перехода у меня совершенно другие: openmp у меня прекрасно работал и под visual studio, компилятор я предпочитал (и предпочитаю) intel, поэтому в плане обновления компилятора мало что изменилось. Разве что сейчас его обновляет менеджер пакетов. Никакого ускорения нет, проект работает ровно с такой же скоростью и под windows и под linux. Поскольку у меня в проекте очень много математики, то по производительности самый медленный gcc, потом идет windows compiler, самый быстрый intel compiler.

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

> o_O... еще как имеют.

Я к тому, что это проект freedesktop, а что там дистростроители с ним делают - это их личное дело. Тут было утверждение, что от него только хуже, так вот - оно спорно.

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

> бгг... ну чисто теоретически - да, а на практике даже если код написан правильно и скомпилировался - не факт что он будет работать одинаково и вообще работать... проверено электрониками (с) :)

Замените электроников - ваши не в курсе.

Занимаюсь cross-platform уже лет 10. SPTK (http://www.sptk.net) тому подтверждение. Для большинства задач ни Qt, ни Gtk не нужны. Это, скорее, удобство, чем необходимость. В любом случае - код в SPTK достаточно простой, можете просто посмотреть. Базовые классы создают абстракции от OS, хотя и не со 100% покрытием функциональности. Программы, написанные с их использованием, уже практически не зависят от OS. Различия могут быть например, в путях установки, в домашней директории пользователя, и тд. У меня был опыт перевода CRM в 140K+ строк (написанной с использованием SPTK), с Windows на Solaris за пару дней.

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

Перечитал 2 раза... Так и не понял, на что жалуется афтор. На то что он не получил должного результата в системе разработки 4-летней давности на системе 7-летней давности(когда о многоядерности слышно не было еще)? Почему из линукса он не выбрал федору 1.0? Или на то что не смог "установить СВОЮ Studio на эту ОС"? O_o Такое, безусловно серьезное, приложении вообще писалось что ли для себя, если выбор средств и целевой ОС для запуска не важен? Зачем вообще тогда на WinXP начинал? Вывод - ССЗБ!

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

> м... я конечно не знаю, где вы з/п добываете, но цена Visual Studio Pro 2008 Win32 около 1k$. Если ваш годовой доход на кодинге 250-300k$ - мой вам респект :)

У нас в переходе метро можно за 5$ купить. Только не надо говорить про Васю Пупкина и солидную контору. Фирмы благополучно покупают одну копию за 1000$ для супорта, а все сотрудники пользуются нормальным 5$ дистрибутивом.

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

Изврат

>Читай добавление - он мог использовать сам OpenMP, но это требовало пересборки библиотеки со всеми её зависимостями, на что он бы потратил несколько рабочих дней.

А к вантузу портедж прикрутить не пробывал?

BAN
()

>В начале я работал в Visual Studio 2005 на Windows XP. Это уже стало само по себе проблемой - обновление Visual Studio или системы не является тривиальной задачей, так как и ОС и среда разработки требуют покупки новых лицензий, а особенно в офисной работе новые версии покупаются не так уж и часто.

Судя по этому кодинг там где он работает приравнивается к печатанию текстов в ворде. Epic loser detected, дальше читать не вижу смысла.

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

>А потом удивляйся, почему система тормозит от каких-то пяти тысяч потоков.....

Дык вы сначало ознакомьтесь с OpenMP. Там явно потоки никто не задает, если не уверен.

#pragma omp for schedule (static, chunk) for (i=0; i<MSIZ; i++) for (j=0; j<MSIZ; j++) a[i][j]= i;

Сколько тут потоков будет? Правильный ответ - столько сколько задано в переменных среды и политиках ОМП. Тоесть даже админ может изменить производительность.

У меня например лабораторка после подключения ОМП стала работать медленнее, а кроме того вообще у нас небыло программ которые выполнялись быстрее моей.

Подозрение было на то, что я матрицу (задача - перемножение матриц) развернул в вектор и последовательно читал память. При этом значительная часть вектора попадала в кеш и все быстро работало. А вот при 2-х потоках они начали конкурировать за кеш.

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

>мсье, почитайте книжечку по OpenMP, а ;)

Обязательно! :) В своё время.

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

>А потом удивляйся, почему система тормозит от каких-то пяти тысяч потоков, хотя в них ничего не считается. Надо запускать потоков по числу ядер, если надо считать что-то тяжелое и несколько потоков для действий, которые должны выполнятся независимо(gui например).

Об этом и говорю. Посему архитектура реализации параллелизма тут по-видимому немаловажна.

GladAlex ★★★★★
()

Какой нетипичный вендузятник - все то он по стандартам пишет, без мелкомягких примесей (скрипты vs не в счет).

>> В настоящий момент, средства разработчика на Linux вполне удобны и "болезненного перехода" от Visual Studio на, к примеру, KDevelop или Eclipse CDT больше нет.


Вот тут напрягся:Eclipse CDT наше всио, kdevelop закопать.

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

> Отстали от жизни. Это раньше QT имел две лицензии - GPL и коммерческую. ИМХО это был серьезный минус перед...некоторыми другими тулкитами =) > Сейчас QT - LGPL.

Qt Commercial License

The Qt Commercial License is the correct license to use for the development of proprietary and/or commercial software with Qt where you do not want to share any source code.

You _must_ purchase a Qt Commercial License from us or from one of our authorized resellers before you start developing commercial software.

слово must - видимо я тоже придумал.

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

>в системе разработки 4-летней давности

facepalm.bmp.

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

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

>>годовой доход на кодинге 250-300k$

> вполне реально, к примеру, в ойро..


За кодинг - нереально. Принципалы в $120-140k в богатой америке зарабатывают, только, боюсь, им студия уже по одному месту.

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

Бгг, еще и ойро...
Если это и реально, то это кодинг 24х7 с наручниками и дыркой в стуле вместо туалета.

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

Это оригинальный автор которого на Qt свалил то? =) Конечно слышали.

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

Re: Переход на Linux: взгляд разработчика под Windows (перевод) > Отстали от жизни. Это раньше QT имел две лицензии - GPL и коммерческую. ИМХО это был серьезный минус перед...некоторыми другими тулкитами =) > Сейчас QT - LGPL.

Qt Commercial License

The Qt Commercial License is the correct license to use for the development of proprietary and/or commercial software with Qt where you do not want to share any source code.

You _must_ purchase a Qt Commercial License from us or from one of our authorized resellers before you start developing commercial software.

слово must - видимо я тоже придумал.

---

Блин, ну почитай про все лицензии, а потом спорь! Тебя кто заставляет менять Qt??? А если Qt не меняешь, то хватит LGPL.

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

А можно хороший пример кода, когда цикл с кучей вычислений можно хорошо распараллелить с этим инструментом? Кто может привести, если не сложно?!

Вот тебе канонический пример умножения матрицы на вектор. block_dim подбирать по кешу процессора, сейчас стоит оптимальное значение для core2quad с 12M кеша.

template < typename T >
void mat_mult_vector_ (T * r, const T * A, const T * x, int n)
{
#pragma omp parallel
	{
		int block_dim = 900; //cache size = (block_dim * block_dim * 8)
		int blocks = (n + block_dim - 1) / block_dim;

#pragma omp for 
		for (int i = 0; i < n; ++i)
		{
			r[i] = 0;
		}
	
		for (int l = 0; l < blocks; ++l )
		{
			int fl = n * l;	      fl /= blocks;
			int ll = n * (l + 1); ll = ll / blocks - 1;

			for (int m = 0; m < blocks; ++m) {
				int fm = n * l;	      fm /= blocks;
				int lm = n * (l + 1); lm = lm / blocks - 1;

				// blocks:
				// R[fl] += A[fl, fm] * X[fl]

#pragma omp for 
				for (int i = fl; i <= ll; ++i)
				{
					const T * ax = &A[i * n + fm];
					const T * xx = &x[fm];

					T s = 0.0;
					for (int j = fm; j <= lm; ++j)
					{
						s += *ax++ * *xx++;
					}
					r[i] += s;
				}
#pragma omp barrier
			}
		}
	}
}
Reset ★★★★★
()
Ответ на: комментарий от GladAlex

цикл с openmp и без openmp ничем не отличается

Reset ★★★★★
()

Один разработчик перешел на Linux. И это уже достойно новости? o.O

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.