Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.64
Carpe-diem
1 / 1 / 0
Регистрация: 11.10.2014
Сообщений: 57
#1

Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? - Программирование Android

13.12.2014, 05:27. Просмотров 5046. Ответов 92
Метки нет (Все метки)

Нужно написать приложение-справочник,
предполагается ,что информация хранится в базе данных.

Можно ли написать такое приложение для Андроид на С# или С++? И если да, то на чем лучше писать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2014, 05:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? (Программирование Android):

Какое приложение можно написать для диплома по ос Андроид? - Программирование Android
У меня тема диплома - "Программирование для ОС Android". Какой проект можете посоветовать для написания в рамках этой темы?

Можно ли написать веб сервер на Яве для клиента на Андроид,имея под рукой только телефон на том самом андроид? - Программирование Android
Уважаемые гуру программирования, если можно, пожалуйста, напишите поподробнее- какой программой компилировать код, какой лучше выбрать...

на чем лучше писать динамичное приложение для браузера - JavaScript
К примеру нужно разработать игру по типу tower defence для браузера, на каком языке ее лучше писать? Серверная часть я думаю php+mysql (...

Как лучше учиться: писать консольные приложения или оконные? И если писать оконные, то на чём лучше? - C++
На днях я узнал про Borland c++ builder и хочу воспользоваться им, но можно и писать код, что-бы было оконное приложение, так что-же лучше?...

На чем лучше написать приложение для работы с микроконтроллерами? - Программирование
Не так давно стал программистом микроконтроллеров. Кодю на заточенный под контроллер basic и немного работаю c HTML и javascript для...

"Система регистрации заявок для ИТ отдела", на чем лучше писать: php или Java? - PHP
Cистема регистрации и мониторинга заявок для ИТ отдела, на чем лучше писать: php или Java? P.S. Это тема моей дипломной работы!))

92
Fulcrum_013
Нарушитель
698 / 762 / 74
Регистрация: 14.12.2014
Сообщений: 6,034
Завершенные тесты: 3
18.12.2014, 09:19 #31
Цитата Сообщение от Tester64 Посмотреть сообщение
Добавлю еще что под каждый процессор - своя "сборка" исходников на с++. На сегодня компилятор поддерживает 4 вида сборки. Ява - универсальна под любой процессор. Если "забыли" воткнуть нужную сборку под "редкий" процессор (или слишком новый), то на этих гаджетах программа вылетит с ошибкой!
Код на с++ компактнее чем в яве после сборки. Но все 4 "коллекции" не сильно его уменьшают. И всегда есть шанс что "завтра" выпустят новый проц под который Ваша прога с маркета перестанет работать.
Коротче наиболе оптимальным для автор темы решением бы была компиляция с С++ в Java байт-код.
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
18.12.2014, 13:13 #32
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Коротче наиболе оптимальным для автор темы решением бы была компиляция с С++ в Java байт-код.
Это уже что-то из отдела фантастики... Слышал что были попытки обратного - ява команды пытались скомпилить в более плотный с++ код. Но не наоборот!
ИМХО, я довольно детально обьяснил основные возможности с++ под андроид. Дальше пусть автор вопроса для себя решает.

Могу лишь добавить еще что С++ под андроид НАМНОГО медленнее собирается чем под виндой! Лично для меня - это бич всей андроид-технологии и пока не знаю как это обойти... И подозреваю что гугл в этом направлении (ускорение сборки) тоже двигаться не планирует.
1
Fulcrum_013
Нарушитель
698 / 762 / 74
Регистрация: 14.12.2014
Сообщений: 6,034
Завершенные тесты: 3
18.12.2014, 13:47 #33
Цитата Сообщение от Tester64 Посмотреть сообщение
Это уже что-то из отдела фантастики... Слышал что были попытки обратного - ява команды пытались скомпилить в более плотный с++ код. Но не наоборот!
Я имею в виду не трансляцию исходников, а замену кода в который компилится.
Это из области замены кодогенератора в компиляторе. Собственно говоря компилятор состоит из парсера, кодогенератора и оптимизатора. Комбинируя эти компоненты по разному можно получить все что угодно - хоть Visual Basic для z80 хоть Lisp для CUDA, хоть Fortran для Java машины. Любой процессор, как реальный, так виртуальный (Java-машина) как был так и остался машиной Тюринга. Точно так же - подменой алфавита кодогенератора осуществляется переключение под разные таргеты для компиляции. Вообще насколько понимаю Суть технологии Java состоит в выносе кодогенератора из компилятора в среду выполнения.
Цитата Сообщение от Tester64 Посмотреть сообщение
ИМХО, я довольно детально объяснил основные возможности с++ под андроид. Дальше пусть автор вопроса для себя решает.
Согласен.
2
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
18.12.2014, 14:28 #34
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Я имею в виду не трансляцию исходников, а замену кода в который компилится.
Это из области замены кодогенератора в компиляторе. Собственно говоря компилятор состоит из парсера, кодогенератора и оптимизатора. Комбинируя эти компоненты по разному можно получить все что угодно - хоть Visual Basic для z80 хоть Lisp для CUDA, хоть Fortran для Java машины. Любой процессор, как реальный, так виртуальный (Java-машина) как был так и остался машиной Тюринга. Точно так же - подменой алфавита кодогенератора осуществляется переключение под разные таргеты для компиляции. Вообще насколько понимаю Суть технологии Java состоит в выносе кодогенератора из компилятора в среду выполнения.
Так глубоко компиляторами не занимался, но думаю все намного сложнее!
Есть некий "словарь" для замены С++ инструкций на блоки на асемблере под разные процессоры. if-then, while, for, обращение к API ОС. Это сделано отдельно для с++ и отдельно для явы. Причем существуют "сборки" "парсера, кодогенератора и оптимизатора" для каждого языка. И они крепко связаны. И их нельзя переставлять так просто между языками "нембольшой подгонкой". И следить за развитием каждого языка надо отдельно. Вариаций С/С++ я знаю на сегодня не меньше 3х-5ти! Сейчас работаю в С++11 (самые азы для андроида и win-консоли).
Проще сделать парсер-парсер между языками! Это было проделано для Делфи-СБилдер много лет назад. И если бы проект не забросили тогда-же, и поддержали гуру этих языков, возможно он бы развился и оставался актуальным.
1
Fulcrum_013
Нарушитель
698 / 762 / 74
Регистрация: 14.12.2014
Сообщений: 6,034
Завершенные тесты: 3
18.12.2014, 17:33 #35
Цитата Сообщение от Tester64 Посмотреть сообщение
Проще сделать парсер-парсер между языками! Это было проделано для Делфи-СБилдер много лет назад.
Ну тут все вообще просто, а особенно в данном случае. Все языки являются подязыками С++, соответственно трансляция исходника в С++ осуществляется просто подменой алфавита. Хотя тут то же самое что и со сменой таргета. т.е. просто рассматривать выходной язык как таргет.
Цитата Сообщение от Tester64 Посмотреть сообщение
Есть некий "словарь" для замены С++ инструкций на блоки на асемблере под разные процессоры
И даже напрямую в машкод. Java-машина - это виртуальный процессор, а байт-код это ее машкод. Т.е. фактически просто другой таргет. Да кстати, существуют процы у которых Java реализована в виде микропрограмм процессора. Т.е. - реальные процессоры у которых машкодом является Java байт-код. Соответственно добавить под них таргет тоже можно.
Цитата Сообщение от Tester64 Посмотреть сообщение
if-then, while, for, обращение к API ОС
if-then, while,do, for, call,return, goto, break и continue (хотя это варианты goto) и выражения которые сводятся к набору call, плюс описания переменных. Итого 10 операторов. Перевести их из текста в соответствующие коды это задача парсера. Дальше эти коды обрабатывает кодогенератор, который переводит их в машкод по соответствующим паттернам. При этом генерируемый машкод не одинаков для каждой из десяти комманд, т.к. может использоваться разное распределение регистров и т.д. в каждом случае, в зависимости от предыдущих комманд, и типа данных. В случае же компиляции в Java-байткод все гораздо проще, тк в байт-коде только одна инструкция ADD а не несколько вариантов как в машкоде x86

Добавлено через 2 часа 39 минут
Цитата Сообщение от Tester64 Посмотреть сообщение
И если бы проект не забросили тогда-же, и поддержали гуру этих языков, возможно он бы развился и оставался актуальным
Новые версии Билдера и Дельфы появляются как грибы после дождя. кстати все почему то забыли что в той же компании еще и Джава-Билдер имеется. Более чем уверен что там один компилятор для С++ и Паскаля, только с разными парсерами. Для jBuilder меняется не только парсер но и алфавит таргета. Залез только что в мануал по байт-коду. Выглядит абсолютно как выходной код парсера.
2
Fulcrum_013
Нарушитель
698 / 762 / 74
Регистрация: 14.12.2014
Сообщений: 6,034
Завершенные тесты: 3
19.12.2014, 20:36 #36
Да кстати
Цитата Сообщение от Tester64 Посмотреть сообщение
Это уже что-то из отдела фантастики... Слышал что были попытки обратного - ява команды пытались скомпилить в более плотный с++ код. Но не наоборот!
Да кстати насчет компиляции с С++ в байт-код
компиляции с С++ в байт-код
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
20.12.2014, 17:58 #37
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну тут все вообще просто, а особенно в данном случае. Все языки являются подязыками С++, соответственно трансляция исходника в С++ осуществляется просто подменой алфавита. Хотя тут то же самое что и со сменой таргета. т.е. просто рассматривать выходной язык как таргет.
Еще один "историк" нашелся... Паскаль появился практически одновременно с с++! И НЕ является наследником С! У них есть общие предки - более древние мертвые языки. Это как спорить английский произошел от французского или наоборот, забыв о латыне.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Новые версии Билдера и Дельфы появляются как грибы после дождя. кстати все почему то забыли что в той же компании еще и Джава-Билдер имеется. Более чем уверен что там один компилятор для С++ и Паскаля, только с разными парсерами. Для jBuilder меняется не только парсер но и алфавит таргета. Залез только что в мануал по байт-коду. Выглядит абсолютно как выходной код парсера.
Во первых не так часто... VisualС++ с такой-же частотой плодится, если не чаще (а команда разработчиков там побольше). Компилятор там НЕ один! Паскаль - это шедевр, до которого С++ еще очень долго идти. Он считается САМЫМ быстрым из компиляторов. Не знаю деталей, но кажется это связано с лишь 1дно-2х-проходным методом. И новые делфи под андроид вынуждены от него отказаться (особенно .NET релиз). Делфи умирает лишь из-за 1) дороговизны компилятора (борланд-монополист и 1000$ - дорого для студента). 2) нет нормального развития под другие ОС и платформы (с++ впереди планеты всей, а после него ява).
Билдер стремились сделать похожим и на с++ и на делфи. Сделали нечто гадкое для обоих языков.
1) Вроде конструкции похожи на делфийские, но компиляция вместо 2х-3х секунд длится 15-30 секунд даже на пустышке... (столько-же как и в тормознутом вижуал с++)
2) Вроде конструкции похожи на С++, но перекинуть в вижуал си для перевода даже простого алгоритма под Мак/линукс или даже под другой компилятор - без бубна не получается...

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Да кстати насчет компиляции с С++ в байт-код
компиляции с С++ в байт-код
С трудом читаю английский, но не нашел там упоминания байт-кода. И даже если есть (первый бейсик от майкросовта был таким-же - был транслятором). Фишка в том что байт-код ПОДГОНЯЕТСЯ под язык! Например выделяют и фиксируют 2 байта для частой команды на яве. И делают для этих байт аналог на машинном коде. В С++ или Делфи такого блока нет - там другие... И схема ломатеся! Нужно заменить блок на С++ блоком на яве(учтя все коомбинации), а уж потом делать трансляцию. Добавьте к этому что стандарты языков развиваются и за совместимостями надо следить.
Скажу лишь, что лет 5 назад сам мечтал написать свой язык-транслятор (под одну задачу, но "с запасом") и искал себе язык для пользователей... Сильно изучил тему трансляторов и переводов с языка на язык! Там ОЧЕНЬ много подводных камней! Можно сделать перевод простых конструкций, но для сложных нужно потратить уйму часов спецам высокого уровня. А результат скорее всего будет никому не нужен...

Не по теме:

Пора заканчивать подобные обсуждения языков, иначе всю ветку админы перекинут в раздел "Священная война"

0
Carpe-diem
1 / 1 / 0
Регистрация: 11.10.2014
Сообщений: 57
20.12.2014, 19:28  [ТС] #38
Цитата Сообщение от Tester64 Посмотреть сообщение
Не по теме:
Пора заканчивать подобные обсуждения языков, иначе всю ветку админы перекинут в раздел "Священная война"
да нет, продолжайте )) интересно)
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
20.12.2014, 20:10 #39
Цитата Сообщение от Carpe-diem Посмотреть сообщение
да нет, продолжайте )) интересно)
Тогда задавайте вопросы в личке...
Я видел как несколько тем (из С++) туда (http://www.cyberforum.ru/holywars/) перебросили!

Просто зацепило когда так неудачно сравнили Делфи с С++ (как неудачное "отслоение" от с++). Я на него много лет потратил. Из-за его "плюшек" (готовые компонеты, шикарное сообщенство опенсорсных процедур, скорость компиляции, простота, безглючность) долго не мог на более платформо-независимый С++ перейти (хотя планировал кодить еще под "покет"). И сейчас, если нужно по быстрому наваять утилиту с формочками и не тяжелой логикой, хватаюсь за делфи...
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.12.2014, 20:42 #40
Цитата Сообщение от Zuzik Посмотреть сообщение
да и они не самый легкий вариант
Да куда уж легче то?

Добавлено через 12 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Если дружишь с плюсами то Java освоишь быстро, и не только Java. Ибо все языки являются подязыками языка С.
Это ссылочная джава то? Может ещё сиквэл - подмножество бейсика?А на c++ есть ещё и классы и перегрузка функций и операторов, чего нет на чистом c нет. Так что больше похоже, что наоборот. Но джава безуказательная, значит к ней и это не относится. Но всё таки нового в джаве больше, чем исключённого. И попробуйте ка на c++ в один инт запихать 4 чара? Это надо вертеть целый алгоритм, в отличие от чистого c.

Добавлено через 38 секунд
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
У меня переход занял минут 15.
Все 15 минут учил новое название? Новое в c++ по сравнению с его предком за 15 минут даже кратко обозреть проблематично, а перейти - это научиться этими новшествами пользоваться.

Добавлено через 4 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
На самом деле Android API практически полностью на яве. так же как WinAPI на С++.
Клевета. WIN API воняет асмом.

Добавлено через 4 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А вот для писания дров которые на С++ и либов типа GL и т.п. - дык тут не в языке дело а в знании математики и мышлении регистрами проца/девайса.
А ничего, что c++ не предоставляет доступа к регистрам?

Добавлено через 2 минуты
Цитата Сообщение от Zuzik Посмотреть сообщение
2-ой - С/С++ возможно.
Нет: за закрывающей скобкой без оператора следует идентификатор.

Добавлено через 1 минуту
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну я ж и говорю - зная C++ ты уже вобщем то знаешь Java и PHP. С той лишь разницей что в плюсах нет удобной конструкции foreach ну это мелочи бо как вариант цикла for.
Я знаю c++, на php пишу кое как, к джаве с трудом осилил введение. И что такого удобного для примитивнейшего цикла сначала в другом цикле создать коллекцию?

Добавлено через 3 минуты
Цитата Сообщение от Yury Komar Посмотреть сообщение
но изучив труды Programmera жизнь наладится и сможешь писать андроид софт со временем любого уровня, надеюсь
Жизнь, изучающая чьи-то труды - это сильно. Берущий с полки книгу листок на этом фоне меркнет.
0
ojgen
1 / 1 / 0
Регистрация: 29.06.2014
Сообщений: 11
20.12.2014, 23:30 #41
Написать то можно. )
Один из вариантов для c# - xamarin. Но, придется заплатить ~ 25$/мес за лицензию, или довольствоваться бесплатной, ограниченной, версией.

На счет c++, думаю, проще по быстрому ознакомится с java - скорее напишите. Но это мое личное мнение )
1
Fulcrum_013
Нарушитель
698 / 762 / 74
Регистрация: 14.12.2014
Сообщений: 6,034
Завершенные тесты: 3
21.12.2014, 01:17 #42
Цитата Сообщение от taras atavin Посмотреть сообщение
И что такого удобного для примитивнейшего цикла сначала в другом цикле создать коллекцию?
Удобно для итерации по массивам. Особенно когда заполняется он в одном месте а просматриваться потом может во многих. хотя я ж говорил-особых неудобств не доставляет, чуть чуть больше кода.
Цитата Сообщение от taras atavin Посмотреть сообщение
Нет: за закрывающей скобкой без оператора следует идентификатор.
Есть такая штука в С++ - препроцессор называется... там просто подряд несколько вызовов макросов препроцессора, при вызове которого тоже скобки используются.
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
21.12.2014, 02:22 #43
Цитата Сообщение от taras atavin Посмотреть сообщение
И что такого удобного для примитивнейшего цикла сначала в другом цикле создать коллекцию?
Опять фразы из раздела "война языков"...
Не надо сравнивать с++ и яву! они для разных целей! Я уже почти пол года учу с++ (ради NDK) и задал ОЧЕНЬ много вопросов СИшникам. Похоже у них ОЧЕНЬ большая параноя по излишней загруженности процессора! Ява - изначально "тормознутая". Поэтому такой вопрос здесь не особо возникает - лишь бы заработало - остальное "проблемы проца"... Даже в андроиде вопрос о производительности и экономиях каждого цикла и байта не возникает! У Сишников слышал такие фразы: это же целый лишний цикл система делает (в 100 проходов). Это же по 3 байта на каждом элементе (из 1000) теряем. Целых 3 вида динамических списка ради экономии на разных видах работ (добавляет быстро, ищет медленно, перебирать тяжело VS добавляет медленно, оптимизирован поиск)
Ява сильно сделана для удобства кодера! Сам подобным циклом не пользуюсь. Предпочитаю матрицу пробегать от первого элемента до длины-1, чем поручать "по всем". Но это дело привычки и доверия.
С++ остался популярен лишь на линукс серверах, драйверах/кодеках и на "встраиваемых чипах". А это накладывает на язык явные "скоростные" ограничения и требует оптимизаций, которые в "окошках" не нужны. Ява (даже под винду) изначально жрет много ресурсов на саму ява-машину. Поэтому подобные ограничения не прививаются разработчикам - "лишь бы заработало правильно" и "побыстрее бы сделать и перейти к следующему проекту".

Но не стоит скатываться в войну языков... Думаю мы достаточно подробно обьяснили автору вопроса!

Цитата Сообщение от Carpe-diem Посмотреть сообщение
Можно ли написать такое приложение для Андроид на С# или С++? И если да, то на чем лучше писать?
Можно, но не стоит!
На С++ работы много. Раза в 2-3 больше чем на яве. Куча извращений и возможных глюков. Интерфейс сделан на яве, а значит либо писать свой либо писать "симбиоз".
На C# можно, но для узкоспециализированных проектов на платных недоязыках. Много ограничений. Безглючность гарантирует только автор "движка". Специалистов мало (здесь).
Советую на яве! Минимальный срок обучения - месяц при полной выкладке! Как говорят - возможен "карьерный рост" .

Еще скажу, что работа с базой в андроиде... Под это ИЗНАЧАЛЬНО заточены механизмы явы под андроид. Под С++ прийдется почти с нуля. Под C# надо уточнять...
0
Fulcrum_013
Нарушитель
698 / 762 / 74
Регистрация: 14.12.2014
Сообщений: 6,034
Завершенные тесты: 3
21.12.2014, 02:41 #44
Цитата Сообщение от Tester64 Посмотреть сообщение
Предпочитаю матрицу пробегать от первого элемента до длины-1, чем поручать "по всем". Но это дело привычки и доверия.
Сам так по началу на PHP делал. Потом привык к foreach(). Но как не WEB-скрипт, а desctop то Builder и соответствеено чуствуется нехватка привычного foreach. к удобному привыкаешь быстро. Но естественно что в С++ такой итератор как мининмум не логично реализовывать, разве что частично для списков имееющих к примеру свойство Count и Items средствами препроцессора:
C++
1
#define foreach(Name,as,Type) for(int i=0;i<Name->Count;i++) {Type as=(Type)Name->Items[i];
Добавлено через 8 минут
Цитата Сообщение от Tester64 Посмотреть сообщение
Даже в андроиде вопрос о производительности и экономиях каждого цикла и байта не возникает!
Во многом согласен. Когда у меня комп был той же мощности что сейчас телефон, операционкой была Windows-2000. Другое дело сколько циклов сверху этого цикла и байта. к примеру если отрисовывать 100 линий без отсечения по окну DDA алгоритмом то и i3 3,3 ГГц тормозить начинает.
0
Kastaneda
Нарушитель
Эксперт С++
4671 / 2875 / 233
Регистрация: 12.12.2009
Сообщений: 7,309
Записей в блоге: 2
Завершенные тесты: 1
21.12.2014, 09:22 #45
В С++ уже есть foreach

C++
1
2
3
4
5
std::vector<some_type> myvec;
...
for (auto &some : myvec) {
...
}
0
21.12.2014, 09:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2014, 09:22
Привет! Вот еще темы с ответами:

На чем лучше писать игры - Java, C++ или C#? - Графика и игры
Приветствую... Передо мною стоит выбор - изучать Java, C++ или C#? Хотел бы заняться игростроем.

Есть определенная задача. На чем лучше писать, C++ или C# - Программирование
Прошу не пинать ногами, отличия C# от C++ я уже изучил. Интересует ваше мнение. Сам привык работать в Visual C++. Есть определенная задача:...

В чем лучше писать базу данных MySql или accec - C#
В чем лучше писать базу данных MySql или accec. Хочу спросить MySql тоже можно без сервера оперировать на C# (вин формс) или без сервера...

На чем лучше учиться писать сайты ASP.NET или DreamWear 8.0? - C# ASP.NET
На чем лучше всего учиться писать сайты? есть две среды(не знаю как точно называется это в web-разработке) ASP.NET и DreamWear 8.0....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru