LINUX.ORG.RU

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

 , , ,


0

0

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

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

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

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

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

Не верю, что в Windows и VS нет аналогов OpenMP.

ИМХО автор небеспристрастен.

x4DA ★★★★★ ()

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

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

moradan ()

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

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

Что же касается С++, VS и G++ поддерживают практически все стандарты (в отличие, например, от OpenWatcom, популярного у нас на Химфаке МГУ), т.е. если код написан правильно, он компилилируется и в g++, и в VS.

annulen ★★★★★ ()

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

>либо он осознанно далеко не беспристрастен
Ага. Не видел программистов пользующихся CMake и Qt, но при этом не знакомых с Линуксом.

eugene2k ()

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

На Qt он перешёл уже после перехода на Линукс (две недели назад по состоянию на 15 сентября). А линукс он по его выражению "пробовал время от времени". И это в "последние несколько лет, когда он разрабатывал только под винду" - то есть до этого уже кодил под никсы.

moradan ()

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

>С использованием сторонних библиотек в никсах все гораздо проще, так как для них есть стандартные расположения и не требуется объяснять компилятору, где находятся сами либы и их заголовки.
К линуксу с его pkg-config это не относится.

eugene2k ()

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

>Ага. Не видел программистов пользующихся CMake и Qt, но при этом не знакомых с Линуксом.

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

Pavval ★★★★★ ()

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

>>С использованием сторонних библиотек в никсах все гораздо проще, так как для них есть стандартные расположения и не требуется объяснять компилятору, где находятся сами либы и их заголовки. >К линуксу с его pkg-config это не относится. У автора проблема была с самостоятельной пересборкой десятка+ библиотек из исходников (на это не хотелось тратить время), а не с их расположением.

moradan ()

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

>На Qt он перешёл уже после перехода на Линукс

>установил с его помощью Kubuntu,так как KDE мне нравится больше – особенно потому что __сейчас я использую Qt__ для разработки интерфейса с пользователем.

vkos ★★ ()

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

> Не видел программистов пользующихся CMake и Qt, но при этом не знакомых с Линуксом.

В этом месте я согласен. Когда переходишь на Linux и если ты программист, оптимальное кроссплатформенное решение (тулкиты и т.д.) находится мгновенно. Те же кто сидят на windows и пишут под него не задумываются о портируемости кода - факт. Они витают в своих мыслях о "90%, зачем нужны эти проценты-объедки" и т.д.

I-Love-Microsoft ★★★★★ ()

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

Хорошая фраза:

«...developing on Linux means you have an extremely stable API (POSIX isn’t going to be replaced with PoseFX, for instance)...»

question4 ★★★★★ ()

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

хорошая статейка.

cetjs ()

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

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

Человек находился во власти FUD, а потом выяснил, что переход на Linux совсем не так страшен, как пишут в микрософте. Вот и получилось.

Aceler ★★★★★ ()

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

> он осознанно далеко не беспристрастен

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

vadiml ★★★★★ ()

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

>>На Qt он перешёл уже после перехода на Линукс

>>установил с его помощью Kubuntu,так как KDE мне нравится больше – особенно потому что __сейчас я использую Qt__ для разработки интерфейса с пользователем.

Автор, ИМХО, сам путается со временем - я так понял, до перехода на линукс он таки не использовал Qt. Тем более программирование на Qt, находясь в GNOME, логичнее, чем находясь в мастдае, опять же ИМХО.

moradan ()

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

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

Хотя бы в том, что программист, пользующийся почти исключительно кроссплатформенным софтом, не может быть назван "программистом под какую-то конкретную платформу". А он себя так назвал. У него из платформозависимого была только студия.

moradan ()

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

>А как он так быстро перешел на QT + OpenGL? Что использовал до этого?

Я так понимаю winapi+OpenGl... Но по легкости перехода от winapi к Qt и OpenMP и можно судить о предвзятости автора (программа явно разрабатывалась с прицелом на кроссплатформенность). ИМХО, нельзя за 10 минут вычистить весь winapi код, если ты изначально не проектировал его так, что это сделать.

moradan ()

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

Когда попробовал пересобрать свою приложение под Линукс 6-7 лет назад - обнаружил тоже самое - оно работало в несколько раз быстрее, чем под Windows, я когда-то здесь об этом писал.

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

GladAlex ★★★★★ ()

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

>OpenMP хорошо работает с циклическим параллелизмом?!
Я так понял, это когда на каждой итерации цикла создаётся новый поток. Может быть, неправильно понял.

moradan ()

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

>Проект, над которым я работаю, написан на C++ с использованием небольшого числа утилит на Python

>Python

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

legolegs ★★★★★ ()

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

бред какой-то.

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

PIV ()

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

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

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

void_ptr ★★★★ ()

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

Я как бы не проблему автора комментировал, а пост в котором было сказано что в никсах проще с разделяемыми библиотеками потому что все они в известных местах :)

eugene2k ()

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

Костыль же. Потому что разработчики дистрибутивов не могут договориться о том какой путь к библиотеке должен быть /usr/lib/gtk+-2.0/... или просто /usr/lib/...

eugene2k ()

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

>>OpenMP хорошо работает с циклическим параллелизмом?! >Я так понял, это когда на каждой итерации цикла создаётся новый поток. Может быть, неправильно понял.

А можно пример кода, пожалуйста: обычный цикл/распараллеленый?

GladAlex ★★★★★ ()

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

> Костыль же. Потому что разработчики дистрибутивов не могут договориться о том какой путь к библиотеке должен быть /usr/lib/gtk+-2.0/... или просто /usr/lib/...

Ты путаешь --libs и --cflags. Ключ --libs возвращает что-то вроде "-lglib-2.0 -lgtk-x11-2.0" и никаких путей тут нету. Благодаря pkg-config меньше срача в /usr/include, не уверен, что разработчики дистрибутивов вообще имеют к этому отношение.

Bohtvaroh ★★★★ ()

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

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

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


В этом то и проблема, если код - это:
цикл
вложенный цикл
внутри вычисление типа a+b*c

как это распараллелить?!

GladAlex ★★★★★ ()

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

Если одна итерация не влияет на другую, то каждую запустить в отдельном треде. )) Сорри, если глупость сказал. :D

Bohtvaroh ★★★★ ()

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

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

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

Скорее, и то, и другое, однако винда действительно может не слабо достать.

Mercenary_Mercury ()

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

> Что же касается С++, VS и G++ поддерживают практически все стандарты (в отличие, например, от OpenWatcom, популярного у нас на Химфаке МГУ), т.е. если код написан правильно, он компилилируется и в g++, и в VS.

Стандарты в теории одни, а код на практике... сильно разный может быть.

sv75 ★★★★★ ()

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

Ничего удивительно. Под виндой удобнее использовать только DotNet.

sv75 ★★★★★ ()

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

>Если одна итерация не влияет на другую, то каждую запустить в отдельном треде. )) Сорри, если глупость сказал. :D

Интересная мысль и очень простая, почему-то раньше в голову не приходила: запусти себе всё по отдельным потокам и не беспокойся. Надо будет попробовать. Но зачем тогда OpenMP?! Тут наверное любым инструментом можно?! Например, запустить потоки, средствами Qt?! Тут я так понимаю, что тут OpenMP никто не владеет?

GladAlex ★★★★★ ()

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

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

Только одно но: вычислений внутри цикла относительно немного: 3 суммы с умножением. Не будут ли накладные расходы на запуск нитей сильно тормозить процесс в целом?! Кроме того идёт обращение к общей переменной - сумме, получается семафоры нужно реализовывать?!

GladAlex ★★★★★ ()

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

> Но зачем тогда OpenMP?! Тут наверное любым инструментом можно?! Например, запустить потоки, средствами Qt?!

OpenMP местами состоит из прагм. Например, когда имеем 2 вектора (массива), которые нужно покомпонентно сложить, то можно написать перед кодом цикла соответствующую прагму. При этом о создании потока задумываться не очень-то и надо.

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

yintu ()

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

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

Если кратко - OpenMP разрабатывалось там же где и OpenGL (в SGI), служит для реализации shared-memory паралелизма посредством внесения pragmas в обычный, serial code.

Если угодно - пишите, синхронизируйте и ловите затыки сами, средствами raw threads.

nikitos ★★ ()

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

> Только одно но: вычислений внутри цикла относительно немного: 3 суммы с умножением. Не будут ли накладные расходы на запуск нитей сильно тормозить процесс в целом?! Кроме того идёт обращение к общей переменной - сумме, получается семафоры нужно реализовывать?!

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

HappySquirrel ()

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

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

// Potential energy part matrix (colomn-major <Fortran> order)
   printf("# Forming potential energy part... "); fflush(NULL);
#pragma omp parallel for private(abspos) 
   for(abspos_prime=1; abspos_prime<=size; abspos_prime++)
   {
    for(abspos=abspos_prime; abspos<=size; abspos++) // fill only lower triangle of the full matrix
    {
      PotentialEnergy(abspos, abspos_prime) =  // Coulomb ME for L=1 case
        2.0*(          primitive_coulomb_int(multiindex_arr(abspos).ftyp+2*multiindex_arr(abspos_prime).ftyp,
                                             multiindex_arr(abspos_prime).n,
                                                                       multiindex_arr(abspos_prime).r,  multiindex_arr(abspos_prime).k,
                                                                       multiindex_arr(abspos_prime).s,  multiindex_arr(abspos_prime).l,
                                             multiindex_arr(abspos).n,
                                                                       multiindex_arr(abspos).r,        multiindex_arr(abspos).k,
                                                                       multiindex_arr(abspos).s,        multiindex_arr(abspos).l) // "Direct"
                       +
             SPIN_SYMM*primitive_coulomb_int(multiindex_arr(abspos).ftyp+2*multiindex_arr(abspos_prime).ftyp+(1-PARITY), // (1-PARITY) is use to indicate exchange-type integral for the case PARITY==0
                                             multiindex_arr(abspos_prime).n,
                                                                        multiindex_arr(abspos_prime).r,  multiindex_arr(abspos_prime).k,
                                                                        multiindex_arr(abspos_prime).s,  multiindex_arr(abspos_prime).l,
                                             multiindex_arr(abspos).n,
                                                                        multiindex_arr(abspos).s,        multiindex_arr(abspos).l,
                                                                        multiindex_arr(abspos).r,        multiindex_arr(abspos).k) // "Exchange"
            );
    }
   }
   printf("done!\n"); fflush(NULL);

annoynimous ★★★★★ ()

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

Ничего (ну и переменные циклов). Все вычисления -- а их много и они сложные, сосредоточены в primitive_coulomb_int

Я постарался применить "функциональный" стиль: все вычисления -- применение последовательности функций к входным данным.

annoynimous ★★★★★ ()

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

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

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

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