Кроссплатформенность. Завязываясь на технологии Microsoft, получим 9001-ю софтину Windows-only.
Это меня сейчас меньше всего беспокоит.
Зато это очень беспокоит нас. Хотя, судя по всему, вы просто хотите попрактиковаться в программировании. :3
Я когда-то тоже кодил на шарпе и считал его мега крутым языком и вообще платформой.
Помнится мне нравилось там быстро формы делать, всякие модные фитчи студии в этом очень помогали… кодить удобно)
Но политика майкрософта и запуск этого IL-кода на виртуальной машине мне очень не нравились. Скорость выполнения нативного кода + возможность контролировать все руками + столь же удобный кодинг при использовании сторонних либ типа буста и Qt + полная кроссплатформенность… ИМХО все это переплевывает все фишки связки шарпа+студия и оставляет её далеко позади)) ИМХО от архитектуры приложения многое зависит, можно и на шарпе написать нормально, и на можно С++ написать тормознутую хрень, но в целом нативный (не для .NET) С++ значительно быстрее.
На мой взгляд шарпом нужно просто “переболеть”))
На самом деле скорость выполнения такая же, как и у кода C++.
Другое дело скорость запуска, когда должен сначала загрузиться фреймворк. Это особенно важно для КПК. Хотя там и compact framework. :3
Обожаю тезисы, начинающиеся словами “на самом деле”
Нужно не путать назначение этого средства программирования… .NET это аналог-конкурент Java, а главная ниша продуктов написаных под виртуальные машины это монстроподобные энтерпрайз-приложения. … никогда бы раньше не подумал, пока не столкнулся с банковским софтом…раньше тоже казалось что весь серьёзный софт пишут на C и Cpp …ан нет…
И нет идеального языка, к которому надо придти “переболев” неправильными
Я например, волею судьбы, выучил язык 1С 7.7 … у меня после этого кардинально мнение поменялось в отношении его (а ведь очень многие его считают бейсиком на русском языке)
Для каждой задачи есть свой инструмент… и если C++ выбирать только потому что “он быстрее работает”…то это просто странно.
А с Вашей точки зрения для данной задачи какой инструмент стоит выбрать?
Ну я не сильно то профессиональный программист И опыта написания программ для КПК у меня нет. Поэтому мне сложно чтото посоветовать.
Что касается меня, С++ в решении данной задачи привлекает потому, что
- Я с ним 10 лет маюсь
- Пероносимость
- Таки я полагаю, что на нем можно сделать не менее быстрый софт, чем на других языках, а в обратном - я не уверен.
А вот что плохо - опыта в написании для КПК тоже нет
Кстати, что думает общественность насчет рендеринга на OpenGL? в этом может быть какой-то смысл, или не стоит даже думать об этом?
Да, Garikk, С# как раз для “монстроподобных энтерпрайз-приложений” (с)
Несколько лет назад работал кодером, как раз подобные штуки писали… соединялки с базами данных, редактирование базы товаров, распечатка отчетов и т.д. Куча форм, талиц… и минимум нагрузки. Чтение/запись в базу данных, проверка вводимых значений и т.д. никаких сложных вычислений. Для 1С тоже скрипты простенькие писал… ввод/вывод, печать отчетов…
Для этого шарп подходит как никто другой, но вот рисовать на нем графу и писать приложения с шустрыми расчетами я бы не стал)
“Кстати, что думает общественность насчет рендеринга на OpenGL? в этом может быть какой-то смысл, или не стоит даже думать об этом?”
Ivan Komarov, мы не думаем… мы проверяем! http://forum.openstreetmap.org/viewtopic.php?pid=40833#p40833 )))
В случае с векторным отображением, для простой навигации в основном нужно только отображение статичной графики… это можно делать очень быстро используя VBO… практически без нагрузки на CPU. Главное что буфферы пересчитывать время от времени не нужно как в случае с редактором.
А что касательно растровых тайлов + векторный путь для маршрута, то тут все еще проще. Не знаю чем тайлы рисовать собираются, но вобще вывести текстуру из памяти видюшки намного быстрее чем тащить ее из оперативки. ИМХО в памяти видюшки держать небольшой кеш для тайлов довольно просто и очень полезно. Нарисовать маршрут оттуда-сюда можно одним VBO… пока считали граф, собрали все точки в кучу… запекли их в буффер, сгенерировали дополнительные точки и индексный буффер если хотим “дорожку”, а не линию. Дальше все в видюшке и она все делает сама… очень быстро.
Дык то на ББ, а что на КПК? На сегодняшний день, как я понимаю, с видеоускорителями дело швах, но могут скоро и появиться.
А мне он запомнился своей неторопливостью. Впрочем, нужно посмотреть ещё… Судя по коду, если это то, что лежит в src/Render, то там есть простор для оптимизации. Кстати, кто тут говорил, что в коде меркартора разбирался?
Если не на КПК в традиционном понимании, то на всяких айпонтах, продвинутых ноклах и прочих модных гаджетах с функцией телефона встроенные видеоускорители весьма мощны. И что ещё немаловажно, они позволяют ускорять отрисовку 2D векторной графики (OpenVG). А Qt данную фичу с недавних пор уже использует.
У меня на телефоне вообще весь интерфейс через OpenGL ES рендерится.
Ivan Komarov, нужен связный_граф
liosha, можно ли где-то почитать про алгоритмы. Википедия - это какое-то зло, тысячу ссылок приходится открыть чтобы дойти до сути…
Пока что самый внятный текст, что я нашел с точки зрения хранения (а может и формирования) дорожного графа, это описание формата kiwi, вроде глава 10.A1 теплее всего… Конкретно интересует вопрос разрежения графа; формирование верхних, разреженных слоев из нижних, более детальных.
Еще понравилась идея OpenLR от томтома, практически открытый стандарт на передачу геоданных. В общем чтива много, но то что интересует - цельной картины нет. Заранее спасибо !
Если не на КПК в традиционном понимании, то на всяких айпонтах, продвинутых ноклах и прочих модных гаджетах с функцией телефона встроенные видеоускорители весьма мощны. И что ещё немаловажно, они позволяют ускорять отрисовку 2D векторной графики (OpenVG). А Qt данную фичу с недавних пор уже использует.
Кхм, вот я в своем HTC T4242 искал-искал видеускоритель, да так и не нашел. Общественность склоняется к мысли, что зажали Про Qt и OpenVG знаю, ага
У меня на телефоне вообще весь интерфейс через OpenGL ES рендерится.
Интересный факт, спасибо. А что за телефон?
Интересный факт, спасибо. А что за телефон?
n900
По вопросам из первого поста складывается впечатление, что автор темы - программист с не очень большим опытом. Какая переносимость?? Человек просто хочет освоить программирование под WM, ему нравится .NET и C#. Получится у него поделка, которой сможет пользоваться только он сам, это в лучшем случае. Потому что пишется ради практики программирования.
По сабжу:
-
Не очень понятны требования, какой функционал хочется реализовать. Я бы начал с простого: Slippy Map на osm-тайлах и выводить поверх пиктограммку с текущим положением пользователя. Можно глянуть в исходники OSMTracker (сам их не смотрел). Писать свой рендерер - ну-ну…
-
Для реализации рутинга так и так придётся хранить рутинговый граф в каком-то внутреннем представлении в памяти. Почему-то мне кажется, что он будет отдельной структурой независимо от того, рисуется карта тайлами или рендерится из вектора. (Поэтому карту лучше рисовать тайлами - так проще.) Для начала можно загружать граф из стандартного xml (придётся мириться со скоростью загрузки и объёмом карты на карте памяти). Реализовать Дейкстру для поиска маршрута. Потом уже думать над оптимизацией, A*, запретами поворотов… если до этого дело дойдёт.
-
Резюме - делать как можно проще и как можно меньше функций, тогда есть шанс получить что-то работающее. Далее, если будет желание, выбросить полученный прототип и сделать новый, в котором учесть ошибки, добавить функции и прочие предложения, которые тут уже понаписали.
PS. Автор, как оказывается, студент. Могу сказать, что даже простейший навигатор, написанный с нуля (а не скомпиленный проект с codeplex-а :)) потянет на дипломный проект для трёх человек, причём это должны быть очень неплохие студенты с технически грамотным руководителем. Если найдёте готовые компоненты, дело упрощается, но всё равно работы много.
По вопросам из первого поста складывается впечатление, что автор темы - программист с не очень большим опытом.
Ну началось. Начали меня оценивать.
Получится у него поделка, которой сможет пользоваться только он сам, это в лучшем случае. Потому что пишется ради практики программирования.
Это заявление, кстати, не имеет под собой никаких 100% гарантий, хотя не спорю, что в большинстве это так. И уж никак эти два предложение ни следуют друг из друга во всех случаях.
- Не очень понятны требования, какой функционал хочется реализовать. …
Требования были приведены. Из них видно, что я пытаюсь понять простую основу для программирования навигатора на движке OSM. Всё остальное домыслено не мной.
- Для реализации рутинга …
Да, спасибо. Народ мне уже дал понять, что не всё так просто в этом королевстве.
PS. Автор, как оказывается, студент. …
Гы. Интересно, как это из моих сообещений следует, что я студент?
Заканчиваешь, значит ВУЗ, устраиваешься на работу, делаешь (читать - запускаешь) несколько проектов (часть - в одиночку) (разного уровня, на разных языках), завершаешь с практикой программирования и переходишь на другую ступень IT-индустрии, устраиваешься в компанию уровня MS … а потом приходит человек и потому что ты что-то не знаешь, называет тебя студентом. :)))
Мне не обидно. Мне смешно. :))
Real 3L0, ты пиши программу знай)) а мы прикроем)