Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > Почему так нужны разработчики под Linux? |
Автор: EvilsInterrupt 5.5.2013, 12:24 |
Считаю себя разработчиком под Windows. За прошедший апрель ко мне позвонило 3 HR-рекрутера с вопросом могу ли я разрабатывать под Linux на C++? За год таких вопросов было не мало. Поэтому и возник: Что толкает работодателей искать разработчиков под Linux? Мне кажется это коммерчески не выгодно. Причина непонимания кроется в том, что считаю и думаю что хорошим разработчиком среднего уровня под Linux стать сложнее, чем под Windows! Прежде чем человек станет уверенным пользователем Linux проходит не менее 1-1.5 года, а под windows этот срок значительно ниже! Прежде чем человек начинает программировать под Linux скажем на уровне "среднячка" пройдет 2-2.5 года, а под Windows это время тоже меньше 1-2 года. Если любой программный проект требует поддержки, то с точки зрения бизнеса время поиска программиста иногда идет на дни, иначе конкуренты задавят. Найти же хорошего программера среднего уровня под Linux значительно сложнее чем под Windows , вот и возникает мое непонимание : зачем же начинаеть проект писать под Linux? |
Автор: Qu1nt 5.5.2013, 13:09 |
Цифры взяты с потолка, а Qt/boost и вовсе делают разработку платформонезависимой. |
Автор: EvilsInterrupt 5.5.2013, 13:18 |
Qu1nt, Не следует начинать разговор с грубости! Не с потолка, а из головы. Года 4 назад я визжал от восторга когда начал осваивать FreeBSD и произошел у меня диалог с одним из программистов, которому не важно что за система. За его плечами область разработки модулей ядра Linux, FreeBSD и OS X. Спустя время начал ему задавать вопрос: "А чего не запилишь проект под FreeBSD?". На что услышал : "Ты когда реально на практике касаешься организации, а не на обсуждениях на форуме, тогда и понимаешь что все это оооочень не просто". В тот момент я не поверил его словам и подумал, что он не достаточно хорошо искал. Но недавно задумался, а почему одна из компаний из которой мне звонили до сих пор в течении 5 месяцев не закрыли вакансию Linux разработчика? Вакансия только для одного специалиста. Условия вкусные и зарплату от 120 и по результатам испыт. срока. Вот и вспомнился разговор с этим моим знакомым, да и все эти звонки с вопросами. |
Автор: NoviceF 5.5.2013, 16:02 |
есть мнение, что линукс можно вполне успешно использовать в качестве embedded системы для определённого круга устройств и он способен в определённых условиях быть привлекательнее QNX и windows embedded ("и самое главное - он бесплатный"). Так что линукс это не только ценный мех ![]() |
Автор: Farmazon 5.5.2013, 16:27 | ||||||||||
Не все задачи возможно легко решить на Windows... некоторые проще на linux решать, это открытая unix-подобная система, дорогого стоит.
Я писал ПО как для Linux, так и для Windows и не разделяю вашу точку зрения. Я считаю что для Linux разработка ПО не сложнее, а даже в какой-то мере проще... попробуйте сами, слишком долго объяснять.)
Метанация. Сроки соспоставимы. Но распространение windows на десктопах больше, кто с этим поспорит... Потому и некоторого ПО на Linux не хватает(гори в аду Adobe). И это зачастую вынуждает его использовать (приходится как минимум виртуалку с ней у себя держать для тестирования).
Метанация. Всё зависит от квалификации программиста и окружения. Опытный спец может освоить язык и/или технологию потратив несколько недель/месяцев.
Иногда заменяемостью кадров можно пожертвовать в пользу других качеств разрабатываемой системы. Некоторые задачи порой очень сложно решить с помощью Windows. Вот, к примеру, попробуйте запрограммировать систему равномерного распределения сетевого траффика между пользователями сети на 2-10к пользователей, с логгированием, равномерной загрузкой каналов и прочим на Windows... |
Автор: EvilsInterrupt 5.5.2013, 17:29 | ||||||
Хорошо. Возьмем и напишем три символа в поиске мойкруг.ру "C++" во вкладке работа. Найдем http://moikrug.ru/vacancies/260581064/ и http://moikrug.ru/vacancies/089467899/. Одному платят больше, а другому меньше. Почему? Потому что уровни знаний и опыта разные. Так определяются "серьезный" и "средний". Любой программист, прежде всего пользователь компьютера. Только набор используемых программ у него значительно шире чем у любого "бухгалтера". Это я обобщено, исключений типа "всякие бухи бывают" я не учитываю ![]()
Отнюдь не сей процесс, что Вы упомянули. ![]() Мне просто очень интересно стало, почему за прошедший год стало больше вопросов про Linux?! Может мне все-таки стоит его осваивать. Я к тому что не хочется потом оказаться в числе догоняющих, если прозевал какой-либо момент ) Добавлено через 2 минуты и 57 секунд
Вот и хочу примеры, примеры взятые из практики реальных Linux-разработчиков, а не надуманные взятые с потолка. Мне хочется знать реальные примеры когда решение с Linux действительно лучше чем решение с Windows |
Автор: Фантом 5.5.2013, 17:39 | ||||||||||
Коммерческого софта под Linux достаточно много, причем в этом случае он, как правило, дорогостоящий. Так что смысл в этом есть.
У Вас противоречие в условиях. Дело в том, что "хороший разработчик" и "разработчик среднего уровня" - это немного разные люди. ![]() При этом разработчиком среднего уровня стать проще под Windows. Хорошим разработчиком - под Linux. Первое объясняется тем, что в массовой разработке под Windows зайдействовано весьма много весьма слабых программистов, поэтому достичь соответствующего уровня относительно легко. Второе - тем, что Linux (вернее, вообще все *nix) существенно удобнее для разработки, и писать качественный код под Linux технически проще.
Это опять смесь теплого с мягким. Под "уверенным пользователем Windows" обычно принято понимать человека, который, скажем так, умеет пользоваться "Проводником" и создавать ярлыки для запуска программ. Для того, чтобы достичь такого же уровня в обращении с каким-нибудь DE под Linux, требуется ровно такое же время и усилия. Под "уверенным пользователем Linux" принято понимать человека, который может существенно больше, это действительно посложнее, но и освоение работы в Windows на том же уровне (умение писать CMD- и PowerShell-скрипты, способность настроить несложный сервер и т.п.) также мгновенным не будет (и, пожалуй, займет даже больше времени, чем в случае с Linux).
О "середнячках" я уже писал, а если брать для сравнения примерно одинаковый (и достаточно высокий) уровень возможностей, то под Linux достичь его получится, наоборот, быстрее, чем под Windows.
А тут возникает вопрос, что критичнее - взаимозаменяемость кодеров и "счет на дни" или что-то другое. Отсюда и результат: для массовой разработки сравнительно несложного софта Windows действительно предпочтительнее, поскольку и покупателей больше, и организовать работу проще. Однако далеко не весь разрабатываемый софт является массовым и несложным. |
Автор: Farmazon 5.5.2013, 18:54 |
Вот те пример: разработка системы контроля доступа к сети, распределения и учёта траффика для 2к пользователей, с обеспечением равномерной загрузки внешних каналов траффика и приближённо "справедивым" распределением траффика между активными пользователями. Плюс добавьте группу привилегированных пользователей с приоритетным траффиком. Linux: разработка заняла 2 недели(2 человека) плюс 2 недели доводки(1 человек)... ну где-то 1.5 человекомесяца. Разработку вели 2 студента третьекурсника. В качестве железки используется сервер на базе Xeon 5xxx (SCSI винт и память DDR400 6 га) с 2мя гигабитными интелловскими интерфейсами, нагрузка создаваемая системой на железо менее 20%. Сколько вы это будете ваять на Windows и каких людей придётся задействовать?... Какое потребуется оборудование и ПО, какова его будет стоимость? дайте оптимистичный прогноз. |
Автор: fish9370 6.5.2013, 10:09 |
какой провакационный вопрос а я задаю себе часто вопрос - а зачем нужны программисты под виндоуз? - они же такие бездари-недоучки вот и выходит дилемма, кому они нужны? P.S. не холливора ради, исключительно чтобы понять.. |
Автор: borisbn 6.5.2013, 10:43 | ||||
Вот много раз видел такого рода утверждения, и никак не могу понять - почему ??? Откуда такая безапелляционность ? У Linux лучше комьюнити ? Ни разу. Максимум сравнимо. В Linux удобнее среды разработки ? Если бы не Creator, то тут и сравнивать нечего (желающих объяснить, что отладка из командной строки gdb удобнее, чем встроенный в IDE отладчик, прошу не беспокоить). ... Мне приходится программировать как в Windows (бОльшая часть проектов), так и в Linux. Лично мне существенно удобнее первое. Да... скорее всего, из-за привычки. Но и в тех, кто говорят, что Linux удобнее, срабатывает привычка. Разве нет ? |
Автор: Amp 6.5.2013, 12:09 | ||
В определенных мелких аспектах. Development environment (git/ssh/gcc/системы сборки) настраивается в пару кликов. Например понадобилась мне определенная libraryname для моей программы. Что я сделаю в Windows? Скачаю исходники, качну cmake (если он у меня до этого не стоял), пропишу пути к cmake в %PATH%, запущу все это хозяйство на сборку и будет здорово, если оно сразу соберется. В Linux я запущу пакетный менеджер и просто поставлю libraryname-devel. Не говоря уже о работе тех же встроенных cmake скриптов (FindXXX.cmake) под Windows и под Linux - в первом случае их приходится чуть ли не носом, через переменные окружения, тыкать в пути к библиотеке. Естественно это практически не играет роли в больших проектах. Но изначальное впечатление удобства, легкости и быстрого старта остается надолго. |
Автор: Фантом 6.5.2013, 12:13 | ||||||
Хм... ну, само собой, это все тоже личное мнение, но тем не менее. В Linux существенно более простые и логичные API, структура которых зачастую вырабатывалась десятилетиями. Есть полный доступ не только к документации, но и к исходникам системы, практически исключающий возможность наступить на замаскированные грабли. Почти нет проблем, связанных с обратной совместимостью (вернее, ее отсутствием). Намного лучше унифицированы методы обмена данными между разнородными приложениями, причем соответствующие технологии также стабильны и не меняются раз в несколько лет.
Да, удобнее. Вернее, сама консоль *sh с утилитами - эффективнейшая среда разработки. И, да, gdb таки удобнее. ![]()
Возможно. Но, судя по тому, что Вы писали выше, под Linux Вы работаете тоже в стиле Windows, а использование "чужеродных" методов работы всегда менее эффективно. |
Автор: borisbn 6.5.2013, 12:51 | ||||||||||
Лично для меня это было адом в линуксе без интернета (ну... вот такая специфика).
Вот всегда вы пытаетесь сделать сложнее то, что можно сделать проще. Что я сделаю по Windows ? Скачаю этот пакет (заметьте - со всеми зависимостями внутри), установлю в полтора клика студию (опять же, если её раньше не было), открою *.sln и нажму F7.
ну как же... "такой-то пакет требует libc версии 6.1.14.55, а у вас установлен 6.1.13.42"...
ну... да... не без того. x11vnc дико тормозит, а просто vnc вообще работает так, что впечатление, что его вообще не проверяли. Ладно, господа, давайте завязывать. Судя по всему мы в любом случае останемся при своих мнениях, а конструктивных замечаний кроме того, что в линуксе API не меняется много лет всё равно нет ((( P.S. Поверьте, я не холиварю. Я, также как и ТС, хотел понять, чем линукс привлекательнее для программиста и пользователя. То, что он удобнее для сисадмина, я уже понял. |
Автор: fish9370 6.5.2013, 13:23 | ||
а ты пользуешься gdb-шником в чистом виде? не через cgdb? |
Автор: kamre 6.5.2013, 14:00 | ||
Как в этой "эффективнейшей среде разработке" осуществляется навигация по коду? Через утилиты find-grep, которые ничего не знают про семантику языка и ищут тупо текст? Как в консольном gdb удобно и быстро просматривать сложные вложенные структуры данных при отладке? |
Автор: Фантом 6.5.2013, 15:37 | ||||
Чаще да. cgdb имеет смысл в ситуации, когда есть только одна консоль (и нет screen/tmux). Добавлено через 2 минуты и 28 секунд
А нормальные редакторы уже запретили?
Хм... а в чем проблема? |
Автор: krundetz 6.5.2013, 15:46 |
Демографический кризис в стране, а программирование область, где не получиться чтобы думали за тебя, а таких в низко конкурентной среде ещё меньше, вот так и живем |
Автор: EvilsInterrupt 6.5.2013, 16:33 | ||
Думать надо там, где это действительно необходимо! Зачем создавать проблемы самому, когда можно один раз решить и больше не возвращаться к ним или просто тупо жать кнопки, а сэкономленное время потратить с пользой к примеру на решение других важных задач. Возьму пример из моего небольшого опыта использования FreeBSD: Поставил себе где-то 1.5 года назад FreeBSD Release 9.1 amd64 . Поставил ничего лично ни мир ни ядро не пересобирал и программы ставил из пакетов. Вдруг захотел посмотреть фильм, оказалось VLC не содержит нужного кодека. Посмотрел на последнюю версию прекомпилированного пакета. Но мне все-таки пришлось сконфигурировать порт с нужным кодеком, чтобы потом скомпилировать из исходников. Процесс просмотра фильма был отложен на 40 мин. Тот же самый windows на который многие Linux-оиды ругаются решает проблему просто: 1) скачать инсталятор кодека 2) установка и все это не больше 10 мин. Меня реально пугает то что в Open-Source обычные тривиальные вещи иногда приходится ждать в лучшем случае десятки минут. А бывают тяжелые случаи, когда много зависимостей требуют обновления! Пока увидел только один серьезный аргумент в пользу Linux: десятилетиями отшлифованный API. А слова "там в *Nix-система ком. строка рулит", так сейчас PowerShell в Windows столько может что просто загляденье! |
Автор: Фантом 6.5.2013, 17:02 | ||||||
Ну так FreeBSD в этом отношении - другая крайность. Причем, кстати, это и не Linux. Но, кстати, это тоже некоторое преимущество (хотя в основном и не для программирования) - можно подобрать дистрибутив по потребностям. Одно дело - разворачивать сервер, другое - домашную машину, на которой надо смотреть фильмы, но для каждого из этих вариантов есть готовые решения.
Да, но есть пара неприятных моментов. Во-первых, возможности PowerShell даже сейчас не дотягивают до того, что можно получить из bash и пачки скриптовых языков. Во-вторых, он штатно появился в 2006 году, это уже третий язык такого рода в семействе DOS/Windows, и нет никакой гарантии того, что потом не появится четвертый. |
Автор: EvilsInterrupt 6.5.2013, 17:19 | ||
Благодаря этой крайности я понял как надо организовывать и проектировать интерфейс консольных программ. ![]() Но это не означает,что я такой же подход не могу использовать в Windows-приложениях.
Ну .Net уже достаточно давно существует, более-того шагнула в Linux-мир. Так что говорить о том что Power-shell загнется не имеет смысла. Задачи надо решать сейчас, значит надо решать так чтобы решение было сопровождаемым и решало задачу полностью. Этот Power-Shell позволяет оочень многое сделать, в отличии от bat-аники ) |
Автор: Amp 6.5.2013, 17:38 | ||
Согласись, что в линупсах оно в любом случае делается быстрее - все уже собрано и аккуратно разложено по каталогам, тот же boost. Естественно в будущем наверняка потребуется пересобрать это с другими флагами/опциями/версиями, поэтому и писал, что в рамках крупного проекта это все сомнительное преимущество, но для тренировки на кошках на пути к вышеупомянутому "среднеуровневому" C++ программисту - самое то. А студия ставится явно не в полтора клика и не одну перезагрузку (если в системе не стоит нужной версии windows installer-а и .net framework-а). Ставил в прошлом году RC 12-ой - два раза минимум перезагружался. |
Автор: Фантом 6.5.2013, 17:54 | ||
Ну как сказать... у меня есть пример: комплект TeX'овских стилевиков вместе со скриптами, занимающимися и автоматизированной сборкой документов и их раскладкой/печатью/рассылкой. Сейчас еще раз проверил - все это делалось в 1998 году и работает до сих пор без каких-либо правок (кроме вносившихся расширений функционала). В том, что лет через 10-15 это все по-прежнему будет работать, я практически уверен. В том, что аналог на PowerShell через те же 10-15 лет будет где запускать... пожалуй, все же нет. Возможно, в дальнейшем все будет лучше, но пока у MS репутация по этой части скорее отрицательная. |
Автор: EvilsInterrupt 6.5.2013, 18:05 |
Фантом, Итого: Формулируем второй плюс средство решения задачи написанное сейчас вероятно будет работать и через десять лет. |
Автор: fish9370 6.5.2013, 18:10 | ||
чем больше ты пишешь, тем более понятен твой уровень, ты похоже действительно не понимаешь, что твориться в мире юникса.. но я не об этом, все кто высказывался здесь в пользу виндоуз определенно направлен на разработку прикладного софта, но я бы хотел напомнить, что не прикладным софтом единым живет информационная индустрия.. большинство софта, которым пользуется, не побоюсь этого слова, миллиарды человек, такого как СУБД, веб-сервера, файловые сервера, почтовые сервера, программное обеспечение мобильных устройств, коммутаторы, маршрутизаторы, не говоря о самом линуксе - все это было изначально написано юникс-программистами.. ну а программы из под виндоуз их срок жизни 5 лет не больше, они не портируются никуда.. под виндоуз, только игры писать красивые, да и то серверная часть все равно будет на линуксе, если это плейстейшн нетвок, или другая приличная сеть.. (я слышал, в майкрософте используют линукс на серверах ![]() но все это не главное, в линуксе есть man - вот настоящая сила, только не говорите мне про powershell я его псевдоман видел, он убог, как и сам powershell с недоразвитым дополнением.. cgdb - легко заменяет любой графический отладчик |
Автор: borisbn 6.5.2013, 20:12 |
Фантом, а ведь ни тебе, ни мне http://ru.m.wikipedia.org/wiki/%D0%9F%D0%BB%D0%B0%D0%BD%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D0%BE%D0%B5_%D1%83%D1%81%D1%82%D0%B0%D1%80%D0%B5%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5, чтобы оно работало через 15 лет )) Добавлено через 2 минуты и 38 секунд Или ты из этих пресловутых рыцарей без страха и упрёка? |
Автор: Фантом 6.5.2013, 20:26 | ||
Мне - надо. Да и 15 лет - не так много, самый старый код, с которым я сейчас имею дело, написан в 70-х годах прошлого века. ![]() В смысле? |
Автор: Farmazon 6.5.2013, 20:42 |
TeX - это круто... топорно, предсказуемо, управляемо, легко смотреть историю правок... Не то что этот ваш ворд, который, поиграв со стилями, можно уронить на 5 страницах текста... я в своё время изматерился на нём писать диплом, нашёл шаблоны и писал в latex. Кнут молодчик вообще... Добавлено @ 20:47 и кто так легко поверил, что WYSIWYG необходим (MS поспособствовала?)... Я готов сознательно жертвовать наглядностью в пользу других более важных мне фич. ... Когда ворд сломал диплом одного из одногруппников, тот в истерику впал... хотя вроде один заголовок поправил, разъехался весь документ... ворд могёт (фигли, один из самых продвинутых продуктов копрорации). |
Автор: kamre 6.5.2013, 22:11 | ||||
Какие, например, считаются нормальными? В emacs/vim я не видел удобной навигации (за исключением проприетарного расширения xrefactory для emacs, которое уже не поддерживается).
Расскажите как вы это делаете, я скорее всего чего-то не знаю, но также удобно смотреть в отладчике сложные вложенные структуры данных как в MSVC у меня не получается. |
Автор: Фантом 6.5.2013, 23:46 | ||||
Они не обязательно должны быть консольными. Можно же использовать всякие Code::Blocks, KDevelop, Eclipse... вплоть до банальной Geany.
gdb умеет работать со скриптами. Поэтому вытащить что угодно, превратив это в любой удобный для обработки вид очень легко. |
Автор: kamre 7.5.2013, 00:29 | ||||
Как раз Eclipse+CDT использую, правда больше в MSVC стиле и это никакого отношения к "сама консоль *sh с утилитами - эффективнейшая среда разработки" не имеет по сути. Самая эффективная работа с кодом происходит в IDE, консоль использую только для прогона тестов и некоторых нетривиальных операций с VCS.
Скрипты это хорошо, когда уже известно что именно в конкретном месте отладки нужно посмотреть, и то проще в окошко Watches добавить нужные выражения. А когда еще мало понятно в чем проблема и нужно по-быстрому посмотреть что же сейчас находится в структурах данных, то предлагается вместо удобных datatips в MSVC по шевелению мышки писать кучу скриптов для gdb? |
Автор: Фантом 7.5.2013, 00:32 | ||||||
Ну так это же не религия. Если нужно что-то, что проще делать в среде - можно воспользоваться средой.
А я наоборот. Но мне, как правило, и навигация по коду не нужна.
Откуда куча-то возьмется? Это одна-две строки. |
Автор: kamre 7.5.2013, 00:43 | ||||||
Просто я наверняка что-то делаю не так, раз у меня большая часть получается проще в IDE, а не в "самой консоли *sh с утилитами - эффективнейшей среде разработки". В чем проявляется эффективность? Почти любые операции с кодом удобнее делать в среде, которая понимает семантику языка и помогает не сломать код своими изменениями.
Все связи между разными частями кода храните в голове? Проект небольшой и пишется в одиночку?
Ну так пересмотреть нужно много всего при отладке и раскрыть кучу вложенных структур данных. Там где в MSVC это будет просто подведение мышки к плюсику - в gdb отдельная команда (скрипт?), разве не так? |
Автор: Фантом 7.5.2013, 00:57 | ||||||
Думаю, что причин тому может быть две. Это активное использование ООП или большой размер отдельных функций/методов. Есть такое?
Нет в обоих случаях. Связи отрабатываются на стадии проектирования и написания прототипов, их не обязательно извлекать средствами среды из уже готового кода.
Текстовое описание того, что именно нужно посмотреть, занимает не больше времени, чем манипуляции мышью. Ведь "адрес" или его основные компоненты в подавляющем большинстве случаев уже есть в программе, его можно просто скопировать. |
Автор: kamre 7.5.2013, 01:32 | ||||||
ООП разумеется используется и весьма активно, без него вообще не очень удобно сложный код организовывать. Функции бывают разные, от проекта к проекту зависит. Обычно не больше сотни строк стараюсь делать, а уж чужой код может самые разные вещи содержать. Приходится иногда работать с жутким легаси кодом на C, там ООП не используется, например. Много всего в глобальных переменных хранится, размеры функций часто за тысячу строк переваливают, виден копи-паст с мелкими изменениями. Как сквозь все это продираться без навигации по коду?
Это все в каком-то идеальном случае. А обычно бывает как-то так: пришел в новый проект, там код уже несколько лет пишется примерно десятком разработчиков. Какое-то проектирование и документация имеются, но они далеки от идеального состояния, часто описывают что-то уже устаревшее. Как по-быстрее разобраться в том куске кода, с которым приходится работать?
У меня все это "текстовое описание" занимает куда больше времени, чем просто подведение курсора мыши к переменной в редакторе и раскрытию структур данных. Расскажите как вы это делаете быстро в консольном gdb. |
Автор: Фантом 7.5.2013, 01:38 | ||||||
Лучше всего такое не писать. ![]()
Возможно. Тут я сравнивать не берусь, поскольку в такие ситуации практически ни разу не попадал.
Ну я не знаю, как это еще описать... |
Автор: kamre 7.5.2013, 02:26 | ||||
И я того же мнения, но никто на рефакторинг ресурсов выделять не будет. А вот интегрировать свои модули в этот продукт нужно и весьма тесно, поэтому нужно разбираться в коде и как это делать в "эффективнейшей среде разработки" без IDE я не представляю.
Т.е. всегда все очень хорошо спроектированно, все описано в документации, и она находится в актуальном состоянии? Когда нужно узнать где используется какой-то класс/структура/функция всегда можно быстро понять? Тогда вам очень повезло с проектами, я таких не встречал вообще. Не думаю что у вас общий случай и всем также повезло как вам. Хорошо, тогда расскажите как можно быстро посмотреть значения в следующем простом случае: ![]() В MSVC это просто несколько движений мышкой, даже кликать не нужно. |
Автор: chaos 7.5.2013, 09:48 |
да ладно?! + вы не кликали разве? ![]() ЗЫ в Вашем случае структура класса простая, по этому все так приятно смотрится Фантом, Вас читаешь и страшно становится: навигация не нужна, ide не надо, ... ![]() |
Автор: bsa 7.5.2013, 11:19 | ||
В целом у тебя очень слабое представление о мире *nix. Сравнивать FreeBSD (да и вообще любой "абстрактный" Linux) и Windows это тоже самое, что сравнивать рамный внедорожник и легковой автомобиль - едут оба, только во втором удобнее и девушку посадить не стыдно. В отличие от винды, у которой всего два основных варианта: desktop и server; никсы очень сильно дифференцированы по сферам применения: *bsd и debian - отличные серверные варианты, ubuntu и linuxmint - думаю, лучшие десктопные варианты, (Open)SUSE и Fedora/Red Hat - десктопы и серверы для корпоративных клиентов, Gentoo - любимый дистр растущих линуксоидов (на этапе между "чуть чуть знаю" и "использую везде"). Есть и другие: ArchLinux, Scientific и пр., но я их не пробовал. Я своего отца (более 60 лет) посадил на Linux Mint 13 Mate после винды. Показал как запустить наутилус и mc. С тех пор он пользуется и ни разу не звонил, чтобы узнать, как что-то сделать. Если хочешь сравнивать, то поставь убунту или linuxmint (вариант mate рекомендую). Увидишь, что в сравнении с БСД это земля и небо - и видео играется, и документ пишется, и steam можно поставить, и пр. свистелки/перделки имеются. |
Автор: kamre 7.5.2013, 12:05 | ||
Давно не запускали отладчик в MSVC? Даже кликать не нужно, только подводить мышку!
Ну так мне хотя бы для таких простых случаев научиться эффективно пользоваться консольным gdb, который круче всех и все умеет... |
Автор: chaos 7.5.2013, 12:58 | ||||
действительно!
ох уж этот юношеский максимализм ![]() |
Автор: kamre 7.5.2013, 16:07 |
Частенько линуксоиды gdb нахваливают, что мол все фичи есть и гораздо удобнее чем во всяких тормозных IDE. А вдруг правду говорят? ![]() |
Автор: krundetz 7.5.2013, 17:22 | ||
а необходимо везде и всегда!
чтобы тупо жать кнопки нужно подумать на какую из них нажать, их же не одна, или все же одна? И называется она "Волшебная палочка. Думать не надо. Все, все, все сделает. Только также как двое из ларца одинаковых с лица, ну или наоборот же". |
Автор: Фантом 7.5.2013, 17:32 | ||||||||
Тогда это несколько другая задача: не как сделать все правильно, а как сделать все быстро и дешево. Которая и в самом деле может иметь другое решение.
Если это не так, то начинать надо с приведения документации в актуальное состояние и т.п. А не латать дыры на скорую руку.
Вы можете написать то, что хотите посмотреть? Ну, например, для вывода соответствующего значения в файл? А что мешает в дебаггере написать то же самое и букву "p" спереди?
А Вы не пугайтесь. Это только первые лет двадцать страшно, а потом все проще. ![]() |
Автор: kamre 7.5.2013, 17:55 | ||||||
Ну так задача самая что ни на есть реальная, а не выдуманная как у вас, где все идеально в проекте по всем пунктам.
Проект развивается, продукт продается, и с более или менее нормальными IDE получается работать эффективнее с уже имеющимся кодом. На полное перепроектирование, переписывание и документирование с нуля всей системы никто не пойдет просто так из стремления к идеализму, чтобы в консоли и базовой поставке vim/emacs можно было также эффективно работать как в IDE.
Т.е. все ваши заявления про удобство отладки в консольном gdb были голословными и ничего продемонстрировать вы не в состоянии? |
Автор: Фантом 7.5.2013, 18:14 | ||||||
По-видимому, у нас просто несколько по-разному организована работа. Впрочем, я уже писал в самом начале этой темы: разработку массового сравительно несложного софта под Windows вести проще, но софт бывает и другим.
Конечно. И пусть не идет. Каждый разработчик и каждая контора решает этот вопрос для себя, и я никого не принуждаю. Да и странно было бы - vim/emacs я и сам уже давно всерьез не использовал, это Вы почему-то выбрали их в качестве идеала. ![]()
Я не имею желания восстанавливать нужную Вам строчку по скриншоту, поэтому предполагаю, что Вы в состоянии набрать ее сами. Рецепт уже подсказан: представьте себе, что Вам хочется напечатать желаемый структурный элемент или явно получить указатель на него. P.S. И, пожалуйста, если Вы хотите продолжать общаться, смените тон. |
Автор: kamre 7.5.2013, 18:38 | ||
Продемонстрируйте уже всю силу gdb на таком простейшем примере! Я не вижу как ваш рецепт обеспечивает удобный и быстрый просмотр вложенных структур данных, это почти ничем не лучше по сравнению с добавлением отладочного вывода прямо в код - также низкоуровнево и неэффективно. |
Автор: Farmazon 7.5.2013, 19:03 |
с каких это пор логгирование стало неэффективным способом отладки программ? лол |
Автор: kamre 7.5.2013, 19:10 | ||
Это где вы такое утверждение про логирование увидели? Продуманная и настраиваемая система логирования очень помогает, но когда нужно залезть в отладчик и увидеть еще больше информации, то терять время на добавление в конкретные места отладочного вывода или вбивание вручную команд в gdb не эффективно по сравнению с удобным отладчиком в IDE. |
Автор: bilbobagginz 7.5.2013, 23:09 | ||
это заносчиво предполагать, что работодатель не думает о финансовой стороне найма. |
Автор: Dem_max 8.5.2013, 06:48 |
ТС Мне кажется потому что всяких там Linux и Unix и им подобных систем много, и под каждую систему нужно подстраиваться, так как все эти nix системы не совместимы между собой. Вот отсюда и гимморой, тут нужен мегаспециалист который под все может и будет получать много. А с Виндой проще. |
Автор: EvilsInterrupt 8.5.2013, 07:54 | ||
Так я затем и спросил, чтобы понять "где зарыта собака". А пока мне кажется весьма не выгодно ) |
Автор: fish9370 8.5.2013, 09:40 | ||
оглянись вокруг, кругом линукс, и чем дальше тем больше.. хватить флейм разводить, закрывай тему, твоя позиция ясна, тебя не переубедить, да и кому это нужно? |
Автор: borisbn 8.5.2013, 09:58 |
оглянулся: дома - 2 компьютера. оба с Windows. в кармане - Android (и это только в глубине он линукс. а в подавляющем числе случаев - Java). у брата дома - 3 устройства с iOS и MacOS (см. замечание про Android) и один ноут с Windows. на работе - >50 компьютеров с Windows (включая сервера с Wiki, JIRA, Git, Jabber и пр.) и один, на котором Linux. я поспрашивал своих друзей и коллег. у всех (!) дома - Windows. fish9370, почему ты считаешь, что то, что ты достаточно хорошо знаешь, лучше остального ? P.S. Немного преувеличил. На самом деле дома есть одно устройство с Linux - телевизор. Но, думаю, там его не столько из-за его качеств пославили, сколько из-за цены. |
Автор: fish9370 8.5.2013, 10:33 | ||
на самом деле я не говорил, что линукс лучше, хотя я так действительно думаю, речь не о том, сколько пользовательских компов у тебя дома, на работе, или у меня дома с виндоуз.. я работаю в телекоме и везде, где я работал - линукс используется повсеместно, нет ни одного провайдера в стране, где не используют юникс системы, пусть это даже иногда зашитый в железо софт исключительно.. большинство стартапов используют линукс, потому что прибыли еще нет, а работать уже надо.. я молчу про удобство, прозрачность, предсказуемость и докуметацию.. спор бессмысленный, |
Автор: borisbn 8.5.2013, 10:40 |
handshake, тем более, что удобство в 99% определяется привычкой, а документация и там и там есть как замечательная, так и отвратительная. |
Автор: volatile 8.5.2013, 11:13 |
![]() У нас как-то закупили забугорную аппаратуру для научных исследований (за немерянные бабки кстати) Все драйвера, и софт под Win к этой аппаратуре шли в комплекте, А когда поинтересовались драйверами под линукс, сказали что это надо будет заказывать за отдельную плату, причем цена такая, что дешевле с десяток лицензионных виндузятин купить. Линус - это конечно прекрасно. Но мы не настолько богаты, чтобы ставить бесплатные операционки. Увы... |
Автор: rsm 8.5.2013, 11:21 |
2EvilsInterrupt: попробую ответить "с той стороны", с позиции "чистого" GNU/Linux-программера, который разрабатывает софт исключительно под GNU/Linux и не пытается "усидеть на двух стульях" даже в случае использования кроссплатформенных средств (Qt, Python и т.п.). Итак. Почему GNU/Linux? Полагаю, не сделаю открытия, сказав что решения на основе GNU/Linux давно и широко используются в сетевой инфраструктуре компаний всех масштабов, от международных корпораций до локальных сетей на пару пользователей. Эти решения привлекают бизнесменов по разным причинам: кто-то просто хочет сэкономить на лицензионных отчислениях и поддержке, получив продукт надёжный и качественный; кому-то требуется нестандартная конфигурация; кто-то нуждается в повышенной безопасности. Перечислять можно долго. Важно одно: бизнесу нужны такие решения и соответственно нужны программеры, способные адаптировать их в каждом отдельном случае под требования конкретной компании. О сроках подготовки разработчиков Расхожее мнение о том, что GNU/Linux-программеру требуется больше времени на достижение квалификации высокого уровня, это не более чем миф. Здесь я подразумеваю подготовку специалиста по разработке системного ПО. Во-первых, это моя стезя и её я знаю лучше, поэтому могу выскать более достоверное мнение. Во-вторых, ИМХО, "кидать на форму" (т.е. создавать прикладное ПО) можно в любой ОС с равным успехом, достаточно лишь взять соответствующие средства. Основой же мифа являются, на мой взгляд, две вещи. Первая: полное отсутствие понимания общей концепции и приёмов работы с GNU/Linux. Любые попытки поработать "в стиле window$" или "в стиле Apple" сопровождаются непреходящей головной болью и страданиями. Старые привычки и методы мешают, а не помогают. Это, кстати, уже подметили выше, покуда тема не скатилась в трололо про IDE. Первым шагом GNU/Linux-программера должен быть полный отказ от приобретённых ранее навыков работы с другими ОС. Именно этот этап занимает львиную долю времени в подготовке квалифицированного специалиста. Отсюда вывод: чем раньше начнёшь, тем легче будет пройти эту ломку. Вторая: другой миф об отсутствии удобных и мощных средств разработки. Данный пункт самым непосредственным образом связан с первым, т.е. с попыткой применить те же методы работы, что используются в других ОС. В основном это выражается в предпочтении средств разработки с GUI средствам с CLI и в отсутствии навыка и привычки подвергать свою работу автоматизации с помощью скриптов. Отмечу, что я не призываю радикально отказываться от GUI и сидеть только в терминале. Просто каждому инструменту - своё место, и не следует пытаться их взаимозаменять. Таким образом, подготовка квалифицированного GNU/Linux-программера в общем случае занимает столько же времени, сколько и подготовка специалиста под любую другую ОС. Разница лишь в распределении времени на конкретные этапы обучения. При этом на стороне GNU/Linux есть преимущество - доступность исходников, ценность которых при разработке системного ПО трудно переоценить. О поиске разработчиков на рынке труда Действительно, если соотнести количество GNU/Linux-программеров и всех остальных, результат будет совсем не в пользу первых. Не вызывает сомнений и б́ольшая продолжительность поисков подходящих специалистов. Что с этим делать я не знаю. Видимо, просто ждать пока GNU/Linux набирает обороты, становясь всё более привлекательным решением широкого спектра задач бизнеса. Вместо выводов Быть или не быть GNU/Linux-программером - зависит исключительно от собственного желания. Ибо уже сейчас рынок труда предоставляет достаточное количество рабочих мест. |
Автор: Dem_max 8.5.2013, 11:28 | ||
Хотя бы взять Rohde & Schwarz они даже в свои приборы ставят винду и пишут софт под винду. Добавлено через 2 минуты и 11 секунд
А под Linux вообще есть среда разработки с GUI ???? |
Автор: rsm 8.5.2013, 11:32 |
ВНЕЗАПНО есть ![]() |
Автор: fish9370 8.5.2013, 12:17 |
простите, кто? |
Автор: bsa 8.5.2013, 13:13 | ||
fish9370, контора которая осциллографы делает.
А потом, конторы зарабатывают основную массу денег не дорогими устройствами, которые продаются в штучных количествах, а дешевыми, которые продаются тысячами. А в дешевых вряд ли винда стоит. Например, у многих дома есть роутер. И только у единиц он работает на чем-то отличном от Linux. ![]() |
Автор: kamre 8.5.2013, 14:46 | ||||
Надеюсь, мне еще не поздно "пройти эту ломку" и стать "GNU/Linux-программером высокого уровня квалификации" ![]()
Мое предпочтение больше выражается в тех средствах разработки, которые предоставляют большую автоматизацию хотя бы для простых задач. А GUI они или нет это не так важно для меня, главное чтобы эффективнее получалось работать. Работая большую часть времени под windows постоянно использую far manager, в %path% у меня есть многие утилиты из gnu core вроде grep/sed/awk/less/... для однострочников, на меню в far весит множество самых разных команд и скриптов на python для всякой разной автоматизации, постоянно использую макросы в far, когда нужно какие-то однотипные операции над файлами/директориями проводить. Если нужна более сложная автоматизация, то предпочитаю писать скрипты на python в PyCharm, т.к. большие портянки на sh не люблю писать, а всякие power-shell пока не осиливал. От IDE мне по большей части нужна хорошая навигация по коду, хотя бы простые работающие рефакторинги вроде переименования поля/функции в классе, удобная интеграция с отладчиком и с VCS. Когда предлагают "эффективнейшую IDE из sh и утилит вместе с простым текстовым редактором", то появляется много вопросов по тому как же это эффективно использовать, а на них уже обычно не отвечают или говорят что все это из IDE вообще не нужно, а нужно сразу все идеально проектировать/реализовывать/документировать. |
Автор: borisbn 8.5.2013, 15:05 | ||
кину камень в свой же огород - http://habrahabr.ru/post/179057/ |
Автор: EvilsInterrupt 8.5.2013, 15:06 |
kamre, Спасибо что описали мой рабочий процесс! ;) |
Автор: Dem_max 8.5.2013, 17:52 | ||||
Конторка такая не маленькая и много денежек зарабатывающая. |
Автор: bsa 11.5.2013, 16:46 | ||
По сравнению с ibm и Apple она нищая. |
Автор: krundetz 13.5.2013, 09:39 |
занятное утверждение, а мы тогда все кто, бомжи? |
Автор: bsa 13.5.2013, 13:23 |
Это я вообще к тому написал, что благосостояние слабо зависит выбора ОС. |
Автор: gormih 13.5.2013, 16:17 |
Самое интересное, что тема все же холивар. Участник ведущий пытающийся понять чем же linux так привлекателен упорно игнорирует тот факт, что например в случае серийного / крупносерийного производства встраиваемой системы значительное удешевление изделия даст использование именно linux, и этим все сказано - больше ничего говорить не нужно. Это раз. Windows - система с закрытым исходным кодом. Ни один оборонный заказчик не разрешит вам использовать windows для разработки устройств управления систем вооружения. Это два. При большем желании могу продолжить, но я думаю не стоит - все равно автору темы не интересно. |
Автор: EvilsInterrupt 13.5.2013, 16:46 |
>>так привлекателен упорно игнорирует тот факт Не игнорирую, а жду аргументации. Ответы типа "значительно дешевле" без каких-либо пояснений это не ответ, это просто мнение! >>Windows - система с закрытым исходным кодом. Вы действительно готовы сотрудничать с человеком не умеющих пользоваться отладчиком? Это первое! Даже такой ленивый как я и то WinDbg изучил, а IDA Pro изучается максимум за 2-3 недели, ну + язык скриптов 1-2 недели. За 2-3 месяца овладеть можно! Второе уже предостаточно в интернет архивов с исходниками Windows, разве что что очень ленивый не найдет. Да их не скомпилируешь, но в качестве учебного пособия вполне подходят! Ответ это тогда утверждение после которого больше спросить нечего! У нас в команде даже практика есть, если человек написал что-то достаточно исчерпывающе, то каждый участник подходит по 3 вопроса задает(если конечно не время выдачи релиза) и больше у человека желания написать что-то непонятно не возникает. >>Ни один оборонный заказчик не разрешит вам использовать windows для разработки устройств управления систем вооружения. Вот, пример отличного аргументированного ответа. Именно это я и жду от участников. Жду весомых аргументов, а не ответов "я так привык" или что-то похоже на аксиоматическое |
Автор: bsa 14.5.2013, 08:10 |
EvilsInterrupt, аргументация по цене. Разработка ПО для устройства стоит 12 человекомесяцев. Устройство планируется выпускать в количестве не менее 100000 шт. по $100. Себестоимость железки - $80. Цена лицензии на windows, допустим, $10. Цена переквалификации одного программиста $1000. Поставить винду минимум $1 млн, переобучить сотрудников (допустим их 4) - максимум $4000 (можно переобучить только двух, например, а остальных они дотянут). Заработная плата сотрудников $2000 для win и $3000 для линукса. Итого. 10 млн - 8 млн - 1 млн - 8000 = 992000; 10 млн - 8 млн - 4000 - 12000 = 1 984 000. Разницу видишь? То что некоторые конторы делают устройства на win, можно объяснить следующими причинами: 1. Главный технический специалист очень консервативен, но имеет большое влияние на менеджмент. 2. Очень много наработок, жестко привязанных к ОС. 3. Используются сторонние компоненты ПО, для которых нет аналогов под другие ОС. 4. Мелкомягкие подарили $1 млрд. взамен на лояльность (Nokia). Это же отнрсится и к серверам. На десктопах все несколько иначе. |
Автор: gormih 14.5.2013, 08:28 |
>> Ответы типа "значительно дешевле" без каких-либо пояснений это не ответ, это просто мнение! Ну вот чуть ниже Вам проаргументировали относительно цены на 10000 изделий. Думаю, относительно изделий в количестве несколько миллионов, (как пример - роутеры, мобильные телефоны, планшеты и.т.д.) можно даже и не считать - экономическая целесообразность очевидна. >>Вы действительно готовы сотрудничать с человеком не умеющих пользоваться отладчиком? Это первое! Даже такой ленивый как я и то WinDbg изучил, а IDA Pro изучается максимум за 2-3 недели, ну + язык скриптов 1-2 недели. За 2-3 месяца овладеть можно! Второе уже предостаточно в интернет архивов с исходниками Windows, разве что что очень ленивый не найдет. Да их не скомпилируешь, но в качестве учебного пособия вполне подходят! А теперь внимательно читаем лицензионное соглашение Microsoft. Я не готов сотрудничать с человеком, дефакто совершающего уголовно наказуемое преступление. Да и по большему счету даже не понятно - зачем мне заниматься отладкой и декомпиляцией того, что в нескольких версиях linux уже отлажено, прозрачно и например имеет разрешение к использованию на стратегически важных объектах связанных с жизнеобеспечением? |
Автор: EvilsInterrupt 14.5.2013, 08:39 |
>>А теперь внимательно читаем лицензионное соглашение Microsoft Чистейший воды реверс не запрещен! Существуют wine(не надо объяснять что это), антивирусные продукты(kaspersky lab, dr.web, esset, etc), программы восстанавливающие пароли(access data, elcomsoft, passware, etc). Как вы думаете эти продукты создаются? >>Я не готов сотрудничать с человеком, дефакто совершающего уголовно наказуемое преступление. Есть некоторые железки драйвера для которых есть только под Windows и Open-Source проектам ничего не остается как реверсить, если на их запросы про спецификации разработчики железок отвечают отказами. Да, это не часто, но это практикуется. Добавлено через 1 минуту и 57 секунд bsa, Спасибо! |
Автор: gormih 14.5.2013, 09:01 |
bsa, Спасибо![/QUOTE] >>Чистейший воды реверс не запрещен! Существуют wine(не надо объяснять что это), антивирусные продукты(kaspersky lab, dr.web, esset, etc), программы восстанавливающие пароли(access data, elcomsoft, passware, etc). Как вы думаете эти продукты создаются? Пункт 8 лицензионного соглашения Win 7 Home Premium. Вы не имеете права: · пытаться обойти технические ограничения в программном обеспечении; · реконструировать, декомпилировать или дизассемблировать программное обеспечение... >> Есть некоторые железки драйвера для которых есть только под Windows и Open-Source проектам ничего не остается как реверсить, если на их запросы про спецификации разработчики железок отвечают отказами. Да, это не часто, но это практикуется. Практикуется, не часто, и не доказуемо на этапе готового драйвера. Скажу Вам по секрету - серьезный разработчик просто откажется от девайса с закрытой от разработчика архитектурой. Пусть кушают сами. Если же вопрос все же встанет действительно серьезно, я думаю найдутся коммерческие пути разрешения проблемы, не хуже чем под windows и в большинстве случаев - либо дешевле, либо вообще никак по причине перехода проекта на windows (очень редкий, уникальный случай). |
Автор: borisbn 14.5.2013, 09:32 | ||
Я, кажется, ещё не проснулся... откуда 8000, 4000 и 12000 ? Что из них на переобучение (кстати, с чего на что?) а что на з/п ? т.е. 3 месяца работы. где тогда 6000 и 9000 ? |
Автор: bsa 14.5.2013, 09:34 |
Гы. Тоже туплю с утра. Умножил не на 3 а на 4 ![]() |
Автор: fish9370 14.5.2013, 09:48 | ||
и много ты надизассемблировал? я не понимаю, почему ты сравниваешь возможности дизассемблирования с исходным кодом на Си, к тому же прекрасно документированном, с множеством книг, руководств и прочих ресурсов очевидно, что любой средний программист под линукс знает об операционной системе в разы больше чем, такой же программист под виндоуз.. это и дает ему качественный рывок над его оппонентом.. пора уже удивление сменить на что-то более внятное - переходи к предметным вопросам, хватит крутить эту заезженную пластинку.. |
Автор: EvilsInterrupt 14.5.2013, 11:28 |
Ну целые операционные системы не реверсил, а вот их части драйвера(руткиты) да. Более того мне очень влом трудно читать чужой исходный код и мне достаточно часто проще посмотреть не результат того что сгенерировал компиллер с помощью дизассемблера. А когда применяешь hexreys decompiler то еще и в более-менее универсальном виде на псевдо-си. |
Автор: gormih 14.5.2013, 15:12 | ||||
То есть, код вида
является легко читаемым. И лучше заниматься такими вещами, чем просто взять готовое с открытым исходным кодом, так по Вашему? |
Автор: rsm 14.5.2013, 18:59 | ||||||||
Всё бы хорошо, если б не один нюанс. Купить IDA не так-то просто даже от лица компании, не говоря уж об отдельных разработчиках. Гильфанов хорошо известен как товарищ очень принципиальный, упёртый и непредсказуемый (Тёма-2, ага). Может продать, а может и не продать - как настроение будет. Но даже если решит продать, непременно провентилирует, кому продаёт. Ибо такой мощный инструментарий нельзя давать в руки кому ни попадя.
Предлагаю провести чёткую грань чтобы не путать тёплое с мягким. В разработке wine используется реверсинг методом чёрного ящика: смотрим в MSDN, скармливаем функции некоторое число Х, получаем результат Y, много думаем, пишем код, возвращающий Y в ответ на X. Пруфы: @http://wiki.winehq.org/DeveloperFaq Q: Who can't contribute to Wine? A: Some people cannot contribute to Wine because of potential copyright violation. This would be anyone who has seen Microsoft Windows source code (stolen, under an NDA, disassembled, or otherwise). There are some exceptions for the source code of add-on components (ATL, MFC, msvcrt); see the next question. Q: Can I contribute if I've only seen the source to ATL, MFC, and/or msvcrt? A: Yes, but not on those components. Also please state on the mailing list that you have seen the source to these and that you will not contribute to them. You are free to contribute to other areas of the Wine source code. @http://wiki.winehq.org/SummerOfCode Beware of Legal Requirements: - You are not allowed to read or reuse Windows source code (leaked source / Windows Research Kernel* / ...); - You are not allowed to reverse engineer Windows files by disassembling or decompiling them; - You are not allowed to analyze Windows files with the trace functions of Wine; - People who work or have worked for Microsoft should probably not participate; @http://forum.winehq.org/viewtopic.php?p=37364#37364 We feed in certain values to the black box and see what comes out. We test all values and even include 'corner tests' which are where functions are supposed to change values but sometimes do not. Clean room means that we delve into the actual code and find out what it does and then attempt to do a better job than the original. <...> So, the Wine project, from the start, has not allowed reverse engineered code. Black boxed code is allowed if you can prove that the results are what are obtained by running test scenarios through a 'black box' or some Windows code. If you cannot, then your code is disallowed. That is why the project requires, for the most part, conformance tests and the more stringent the better. This allow code developers and testers to compare results, not line-for-line code. В двух словах: если разработчики wine сомневаются, насколько легальным путём получен присланный им код, они предпочтут вообще его не брать. Аналогично поступают и в проекте ReactOS - как только появились подозрения что в код попали дизассемблированные куски, разработка была мигом заморожена и проведён полный аудит всего кода. Пруфы: http://www.reactos.org/reactos-auditing-progress-status-032006, http://www.reactos.com/wiki/Audit. У любой из этих компаний есть лицензия на соответствующую деятельность. Пруфы: http://www.kaspersky.ru/license, http://company.drweb.com/licenses_and_certificates/?lng=ru, http://www.esetnod32.ru/company/about/. Применительно к исследованию вирусов реверсинг (который настоящий реверсинг, с дизассемблированием и восстановлением алгоритмов работы программы) это один из способов, разрешение на использование которого вполне вписывается в рамки лицензии в сфере защиты информации.
Аналогично предыдущему: http://www.accessdata.com/about/company, http://www.elcomsoft.ru/company.html, http://www.lostpassword.com/company/customers.htm - у всех есть лицензии. К счастью, есть ещё в мире страны, где за порядком следят и хотя бы пытаются ловить и карать ворьё (любителей ZverCD, попошопа с торрентов, "честно украденного" IDA Pro и прочего софта на многие килобаксы). Поэтому любую компанию или отдельного разработчика, которые пытаются встать на зыбкую почву незаконного исследования кода, закроют (или "закроют") очень быстро.
Опять же, это реверсинг по методу чёрного ящика. Есть трогательная и поучительная история разработки драйвера forcedeth, обеспечивающего поддержку интегрированных сетевых карт из чипсетов серии nForce. По началу nVidia распространяла прекомпилированный драйвер nvnet. Народу это не понравилось и некто Carl-Daniel Hailfinger начал пилить свободную реализацию (forcedeth). Через некоторое время он с огромным удивлением увидел в репозитории множество патчей от разработчиков из nVidia. Кончилось всё это тем, что nVidia официально признала драйвер forcedeth и убрала все упоминания об nvnet. Пруфы: http://liquidat.wordpress.com/2007/03/04/the-forcedeth-story/. Кроме того, если посмотреть примечания к релизам на http://www.nvidia.ca/object/linux_nforce_archive.html, можно заметить что начиная с версии 1.11 упоминания о nvnet http://www.nvidia.ca/object/linux_nforce_1.11, а в FAQ к одной из версий имеется любопытный абзац: @http://http.download.nvidia.com/XFree86_40/nforce/1.0-0236/readme_nforce-1.0-0236.txt Q: Are there open source networking drivers for nForce ethernet hardware? A: Yes, forcedeth is an open-source network driver for nForce ethernet hardware. Most distributions include forcedeth, but some distributions may require you to manually install it once installation is complete. The version of forcedeth included in older distributions may not support the latest nForce hardware. To remedy this, obtain the most recent version of the forcedeth from the www.kernel.org kernel source tree, and build it as a loadable module for your kernel. Таким образом, видно, что nVidia не только не возражает против драйвера forcedeth, но даже поясняет где его взять (хотя по сути не обязана).
Читать-понимать это конечно здорово, однако режим "только чтение" полезен лишь в целях удовлетворения любопытства или в очень узких специализированных нишах. Для бизнеса и/или промышленности он не подходит в принципе. И вот почему. Во-первых, любые виды реверсинга кроме метода чёрного ящика незаконны в большинстве стран. Опять же к счастью, Россия уже двигается в этом направлении, постепенно искореняя пиратство и прочие преступления в части IT хотя бы точечно. Во-вторых, даже с реверсингом методом чёрного ящика разработка аналога проприетарной программы занимает неприемлемо большое количество времени. Упомянутые выше wine и ReactOS показывают это как нельзя лучше. Над первым работают вот уже 20 лет, над вторым - немногим меньше. Результаты определённо впечатляют, но финальной стабилизации ещё очень далеко. И даже такой маленький проект как forcedeth примерно три года был в активной разработке (причём при участии разработчиков из nVidia) прежде чем сама компания сочла его достаточно стабильным чтобы выбросить старые наработки и полностью на него переключиться. И наконец в-третьих, каким бы замечательным ни был разработанный аналог, он никогда не будет в точности соответствовать оригиналу. Просто потому, что ящик - чёрный. А это значит что доверие к такому аналогу будет заранее занижено. Например, несмотря на то, что LibreOffice в целом работает хорошо, он порой напрочь сносит всю разметку с документов в формате *.doc. И этого никак не избежать доколе данный формат будет оставаться закрытым. Таким образом, реверсинг по факту хорош только либо в своих крайне узких нишах (например, в исследовании вирусов), либо по части просто побаловаться. Для решения же сколь-нибудь более серьёзных задач в приемлемые сроки, которые ставят бизнес и/или промышленность перед IT, он непригоден совершенно. Даже если пойти на преступление и не ограничиваться только чёрным ящиком, это не намного уменьшит время, но зато гарантированно "подведёт под монастырь" - если не разработчика(ов), так пользователей. |
Автор: xvr 16.5.2013, 17:52 | ||
Сугубо точности ради - *.doc формат открыт (равно как и все бинарные форматы Оффиса). Правда, не так давно, но сам факт остается фактом - MS уже начала что то открывать, видимо что бы последствия 'реверс инженеринга по методу черного ящика' (с багами) не отразились на репутации исходного продукта ![]() |
Автор: rsm 17.5.2013, 01:52 |
Серьёзно? ![]() |
Автор: borisbn 17.5.2013, 06:37 |
> Очень интересно, что же там такого понаписано, из-за чего документ выглядит по-разному в разных версиях собственного же офисного пакета? HTML уж точно открытый формат, но как выглядит одна и та же страничка в разных версиях браузера... (причём, не только от M$) Думаю, можно не продолжать. |
Автор: xvr 17.5.2013, 13:50 |
http://msdn.microsoft.com/en-us/library/cc313105%28v=office.12%29.aspx http://download.microsoft.com/download/2/4/8/24862317-78F0-4C4B-B355-C7B2C1D997DB/%5BMS-DOC%5D.pdf |
Автор: kriegerod 6.6.2013, 18:49 | ||
set print pretty on |
Автор: xvr 6.8.2013, 13:54 |
Кстати, по поводу преимуществ Linux в мире embedded систем вспоминается история (увы не могу сейчас найти линки с пруфами) об одном HP осцилографе (тогда еще не Agilent), с WinXP (кажется) на борту, который умудрились заразить компьютерным вирусом ![]() |
Автор: akizelokro 6.8.2013, 16:48 |
А не один вам разница на чем писать? Я вот ещё походу холивар между виндой и полуосью застал. Так я взял на винт в 100 мегов чтоли воткнул и винду, и полуось, и слаквару. Везде что-то написал и тем для меня холивар закончился. А самое трудное там было на этих 100 мегах (вряд ли 300, но сейчас особо не помню), все три операционки в довольно работоспособных комплектациях разместить Хотя, у меня большое подозрение, что я одинаково плохо написал проги сразу под все три операционки ![]() |
Автор: yoweb 28.8.2013, 14:37 |
потому что почти все сервера в интернете на linux. |
Автор: Bulat 31.10.2013, 12:28 | ||
Ну и холивар вы тут развели... Вы под виндовс можете проделать что-то похожее??
![]() |
Автор: volatile 31.10.2013, 16:43 | ||
слава богу нет. ![]() |
Автор: Bulat 31.10.2013, 18:06 |
Во-во, слава Богу! Линукс - детям не виндовс игрушка ![]() |