Представьте себе сколько существует разных операционных систем (в смысле настолько разных, что под каждую нужно делать отдельный дистрибутив).
Нужно будет собирать, тестировать (как следует тестировать) и поставлять дистрибутив под каждую. Вы думаете, это так запросто? Что мы с этого получим кроме ощущения «правильности программирования»?
Те 100500 библиотек обычно приходится пересобирать под конкретную систему. Это не очень удобно, учитывая, что наши продукты не open source и следовательно пересобирать их придется нам.
Код можно перекомпилировать под 64 бита, но он запросто может перестать работать, потому что написание кода без привязки к разрядности требует еще лучшего знания языка и еще большей дисциплины, чем написание просто (не так и просто) хорошего (поддерживаемого, понятного, надежного и эффективно работающего) кода, который компилируется только на 32 бита. Вот примеры.
Некоторые проблемы такого вида можно выявить только после очень тщательного тестирования. Плюс есть очень много старого (зато работающего и проверенного) кода, при написании которого 64 бита были как сферический конь в вакууме. Соответственно, если у вас есть неограниченное число разработчиков и тестировщиков с неограниченно высокой квалификацией, то это вовсе не проблема. В реальном мире ресурсы очень ограничены.
Даже интересно. Вдруг мы правда заняты не тем… Есть ссылка на описание того, как конкретно написать библиотеку, чтобы можно было использовать ее из-под всего и везде?
POSIX… Это стандарт интерфейса операционной системы?
Клиентская программа как-то общается с библиотекой, а библиотека как-то общается с операционной системой. POSIX — стандарт общения с операционной системой, общение программы с библиотекой тут ни при чем.
«По-хорошему» звучит прочто отлично. Но что за этим стоит? Ощущение, что использована «правильная, достойная технология»? Хорошо, но бессмысленно. Никого не волнует, что там внутри, пока оно нормально работает. Переписывать на очередную «правильную и достойную» можно так долго, что к окончанию процесса она уже окажется «старой и немодной» и надо будет переписывать дальше.
Очень интересно. У меня есть скажем те же два миллиона строк кода на С++. Мне нужно сделать из них библиотеку, которую можно будет использовать из программы на любом языке на любой платформе. Как сделать это правильно?
Безусловно не факт. Но вы представьте себе 2 миллиона строк кода. Можно переносить все два миллиона строк, а можно не переносить. Тут уж каждый сам решает.
Да, речь в первую очередь о переносе готового кода. Но кстати COM — пожалуй самый удобный способ сделать библиотеку используемой из кучи языков. Так что не только ради отказа от переноса.
Хм… Сообщество не может портировать наш код в Линукс? Это правда, но не из-за того, что код плохой, просто наш код закрыт и мы не давали его сообществу. Кстати, на Линукс мы сами неплохо его портируем.
Мы как раз используем подходящую технологию для того, чтобы с первого раза сделать хорошо и правильно, а не переносить постоянно на что-нибудь еще.
Эта «кривота» позволяет написать код один раз и использовать библиотеку из спектра языков. Предположим, мы потратим время на перенос кода на 64 бита, это никак не поможет использовать его из программ на .NET Компания Microsoft же неспроста сделала COM такой универсальной технологией — в ней есть вполне ощутимая потребность. Называйте это как хотите, но оно работает и с учетом затраченных усилий работает очень хорошо.
Нужно будет собирать, тестировать (как следует тестировать) и поставлять дистрибутив под каждую. Вы думаете, это так запросто? Что мы с этого получим кроме ощущения «правильности программирования»?
Некоторые проблемы такого вида можно выявить только после очень тщательного тестирования. Плюс есть очень много старого (зато работающего и проверенного) кода, при написании которого 64 бита были как сферический конь в вакууме. Соответственно, если у вас есть неограниченное число разработчиков и тестировщиков с неограниченно высокой квалификацией, то это вовсе не проблема. В реальном мире ресурсы очень ограничены.
Вопросы на собеседованиях очень простые. Отличить человека, который может писать хороший код на С++, можно без выяснения тонкостей написания кода без привязки к разрядности. В конце концов, описание наиболее типичных проблем можно найти Гуглом за 10 минут.
Семинары есть, на них происходит обмен опытом по разным специфическим проблемам. Например, опытом разработки распределенных программ.
Клиентская программа как-то общается с библиотекой, а библиотека как-то общается с операционной системой. POSIX — стандарт общения с операционной системой, общение программы с библиотекой тут ни при чем.
Мы как раз используем подходящую технологию для того, чтобы с первого раза сделать хорошо и правильно, а не переносить постоянно на что-нибудь еще.