Программирование для Windows и MacOS
Хочу предупредить сразу, я ни когда не писал под MacOS и даже её в глаза не видел!
Есть задача написание программы, работающей под управлением MacOS и Windows, это вообще возможно, и если да то насколько сложно будет создание такой программы!
Программа - это не наколенная поделка, а серьёзный (по качеству, а не массштабам) проект.
Сзаранее спасибо!
Если нужен единственный исполняемый файл, то, вероятно, можно написать программу в режиме командной строки DOS. Такая программа должна работать и под Windows и под Unix.
Но вообще-то под переносимой программой обычно понимают прогамму, имеющую два (несколько) вариантов под разные ОСи, причем процентов 90-99 кода одно и то же, а разница обычно сосредоточена в одном модуле и касается в основном элементов интерфейса.
Кроме того, программу, написанную для одной системы, можно запустить под другой - через виртуальную машину или эмулятор.
Самостоятельные части кода, не использующие функции ОС можно как сказано выше вынести в модули, общие для обеих частей програмы - в виде оверлеев или отдельных файлов.
Сложность определяется знанием вами обеих ОС и принципов работы вашего языка программирования и самих компьютеров\процессоров. То есть насколько совместимы между собой 80х86 и маковый процессоры. Забота о совместимости оборудования лежит на ОС и программных модулях, с ней взаимодействующих.
Маки сейчас делают на Intel x86.
MuHAOS,
А Джава, кстати, хорошая идея.
А вот если под винды и полуось то тут все замечательно в 99% случаев :) в виндовых API меняете Get... на полуосевые Query...
Ну это ерунда. Если не рассматривать спец. утилиты, то наверняка
автору нужна программа с GUI.
А вот если под винды и полуось то тут все замечательно в 99% случаев в виндовых API меняете Get... на полуосевые Query...
Я сильно сомневаюсь, что полуось сильно интересуют автора
(и вообще, широкие слои программистов-практиков).
Вообще, если это прикладная программа, считаю Java хорошим (если не лучшим) решением.
Если реализация .NET в MacOSX достаточно качественна и близка к возможностям .NET под Windows, то это тоже хороший вариант.
В Windows это думаю, будет лучше, чем Java, на MacOSX - не знаю.
Вообще, не вижу никаких особых причин, чтобы прикладное приложение нельзя было сделать кроссплатформенным.
Если же вы совершенно точно знаете, что Java или .NET вам не подойдет по причине производительности (что маловероятно, раз вы подняли эту тему), то тогда можно посоветовать C++/Qt. Но я рассматриваю это как крайнее решение, гораздо худшее, чем первые два.
И не только, ещё и локальная БД.
По сути планируется база данных на переносном носителе (флешка, USB диск или т.п.), которая не требует установки (кроме разве что общепринятых, наподобие обновление IE) и будет работать достаточно долгое время, в пределах подключения устройства конечно.
И я точно знаю, что запускать её будут и на МакОС и под Windows.
Теперь проблема в другом, я же, ни Java, ни .NET не знаю, нет я не против самообучения, но потребуется качество ПО, а обеспечить его при таком подходе будет проблематично, хотя можно рискнуть конечно....:rolleyes:
http://ru.wikipedia.org/wiki/WxWidgets
Сам не пробовал, но вроде должно как-то с Code::Blocks в обеих ОС работать.
Хотя, если бы позволяло время, я бы взялся написать на Java. И решение хорошее и новый язык изучил бы. Единственный недостаток тут - рискуете репутацию подпортить :)
Ты хочешь разработать программу в Windows, которая сразу заработает на MacOS ?
Этого не получится. В любом случае тебе надо будет отлаживать программу и под Win, и под Mac.
Ты хочешь разработать программу в Windows, которая без особых переделок пойдет под MacOS ?
Тогда смотри в сторону Java.
Ты хочешь разработать программу, которая в принципе может быть собрана, как под Mac, так и под Win ?
Тогда это архитектурная задача, которую, возможно, надо решать с помощью более опытных товарищей (очно, либо заочно, т.е. изучив соотв. материалы). Надеюсь, что ты понимаешь, что программу можно разбить на UI и бизнес-логику. Бизнес-логика в принципе должна быть платформонезависимой, поэтому её можно писать (в твоем случае) на C++ c использованием платформонезависимых библиотек (crt, stl, boost). При этом надо выбрать СУБД с так же с платформонезависимым интерфейсом, либо сделать соотв. обертку для предоставления универсального интерфейса, а саму логику работы с БД описать дважды: для Win и для Mac.
С UI дело обстоит так же, либо используй мультиплатформенную библиотеку (посмотри на Qt, возможно, она и под Mac собирается), либо напиши просто два UI - для Mac и для Win. При этом не обязательно сразу распыляться на две ОС. Напиши все под Win, но с заделом на то, что все платформозависимые части потом будут реализованы ещё и под Mac, поэтому должны быть архитектурно выделены в отдельные части.
в качестве UI, если ты собрался писать на С++ - QT. есть порт для Mac OS.
Глянь на сайте как всё это выглядит на виндузятине и на MacOS.
QT на видновс шароварез, а wxwidgets бесплатна везде. Как альтернатива не имеющая лицензионных ограничений, вполне подойдет.
С Java ещё проще. Учить конечно же не меньше по времени, но того же конечного результата можно достичь меньшей кровью.