Если нужна именно эта утилита но чтоб работала под линуксом или ещё чем то так и напишите. До этого момента у меня заказчиков не было. Вы будете первым. Если найдётся гуру который умеет писать под вашу любимую операционку. То я ему с удовольствием помогу портировать эту штуку. Если гуру не найдется то должны появится очень уважительные причины, для того чтоб я, занялся портированием.
Вовсе нет. Последние года только такой и пишу (С++), если нет серьезного повода ограничиться конкретной платформой. Уж консольный софт вообще нет никакой причины писать платформозависимым. deep125, вы сами просили замечаний и предложений, нет?
Ох, это замечательно, но тепереча Spatialite включает в себя утилиты spatialite_osm_map, spatialite_osm_raw и spatialite_osm_net, которые парсят OSM XML и OSM PBF в Spatialite. Так что… Поздновато, имхо
Софт от того, что он “нормально написан” платформонезависимо, не становится автоматом платформонезависимым. Это прекрасная сказка о светлом будущем. Надо периодически тестировать и поддерживать желаемый зоопарк платформ. Без этого всё тухнет.
С очевидным спорить не буду Просто - повторюсь - не вижу ни одной серьезной причины писать платформозависимый консольный код.
Add: Впрочем, “поддержка” обычно ограничена проверкой, что после внесения изменений VS/g++/clang способны переварить полет мысли. Светлое будущее уже рядом - может, вы не заметили его приход? ))
Иногда платформонезависимость бывает весьма условной.
Например, чего стоят ограничения на имена файлов, происходящие от нежелания возиться с коллекцией кодировок и их подвидов.
Зато код, написанный платформозависимо становится автоматом платформозависимым. И усилия, необходимые для портирования вендокода под другие системы совершенно несравнимы с усилиями, которые тратятся на поддержку. Хотя если код изначально написан без тени мысли что им кто-то когда-то будет пользоваться, поддержка также превратится в кошмар.
Странно, а я вижу. Знаете сколько занимает места, “платформонезависмый прект” на си, с общеизвестными именем “Hello word”?
По моим прикидкам больше чем этот. И всё равно его нельзя будет запустить на тех платформах которые чаще всего окружают вас (андроид, симбиан, win и тд) тоесть по умолчанию и без плясок с перепрошивками и рутами.
Дальше, сколько нужно времени чтобы проверить работоспособность на поддерживаемых платформах? И нужно ли мне это?
А быстродействие? Про него можно сразу забыть. Лишь бы работало без ошибок.
Я конечно не против платформонезависимости, покажите мне проект который одинаково хорошо работает и на windows и на линукс. Кстати меня этот аспект интересует с точки зрения среды разработки и отладки! Макефайлы не принимаются.
То, над чем работаю я, работает под Win, Linux и Mac. Консольные проекты также работают под Android без плясок и перепрошивок. ЧЯДНТ?
Симбиан не щупал, каюсь.
Видимо, не нужно, я не спорю Просто, как справедливо заметил AMDmi3, потенциально кроссплатформенный код и изначально некроссплатформенный - это две большие разницы
Не нужно, и вас никто и не просит. Скажу даже больше - этим заниматься вредно. Под свои платформы проект собирают и тестируют те, кто этими платформами пользуется. От автора в общем случае требуется одна очень простая вещь - не завязываться на особенности одной платформы. Чтобы это условие выполнить, ни о каких линуксах и андроидах вообще знать не надо. А на практике получается что если это условие соблюдено, то и правок для того чтобы собрать проект на другой платформе потребуется полторы штуки - забытый #include добавить, да, может быть, поправить пути в системе сборки.
Переносимость никак не сказывается на быстродействии.
Я не уверен что навскидку назову проект который НЕ одинаково хорошо работает на windows и linux. Из того что я использую у себя на FreeBSD - почти всё кроссплатформенный софт, и его же я бы использовал на linux, window, macosx и вообще чём угодно, возникни у меня необходимость сменить систему.
Ну, допустим, те же firefox/chromium. В качестве апофеоза переносимости можно упомянуть http://scummvm.org/downloads. Ближе к телу - собственно, sqlite3. Из своего - например, всё, что я писал для OSM, включая streetmangler, tiletool и glosm.
А что не так с мейкфайлами? Вообще, CMake. Он даже проект для VS умеет генерировать. А разрабатывайте и отлаживайте в том же, в чём всегда.
Если судить по опыту работы с osm2pgsql, большая часть времени уходит на построение пространственных индексов. То есть, нужен ещё тест по выборке по bbox, произвольному полигону и всё такое.
Так это 4 строчки ваш код. А остальная куча текстовых файлов вокруг чтоб он работал на других платформах.
Просто опытному программисту написать эти 4 строчки на любимой платформе 1 минута времени. А теперь прикиньте сколько ещё нужно потратить времени чтоб назвать эти строчки многоплатформенными.
Я ещё не научился на андроиде консольные приложения запускать.
А кто этот патенциал будет оценивать и как? Если код востребован то он будет портирован независимо от того потенциально кроссплатформенный он или нет. А если никому не нужен то пусть он трижы будет кроссплатформенным толку ноль.
В чистом си отсуттвует уйма вещей которые нужны для написания работоспособной программы. Поэтому хорошая программа эта та которая использует потенциал операционки по максимуму. А не та которая может работать на всех известных операционках. Естественно я имею ввиду утилиты, а не монстры типа OpenOffice, которые могут позволить в себе держать свою операционку.
Вот видите вы даже об этом не задумываетесь. А для меня это очень важно. И не только для меня. Вы слышали например про CUDA.
Так она не на всех компьютерах в пределах одной операционки работает! Но тем не менее продукт очень даже востребован.
Мне нужен проект консольной утилиты, с поддержкой мультипоточности.
Это как? Разработка без отладки не бывает. А отладка без сборки не бывает. Или вы предлогаете держать два проекта? Один для всех а другой для себя плюс периодическая их синхронизация и проверка результата?