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

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

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

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

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

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

Можно ли написать такое приложение для Андроид на С# или С++? И если да, то на чем лучше писать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2014, 05:27     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать?
Посмотрите здесь:
Какое приложение можно написать для диплома по ос Андроид? Android
Android Можно ли сделать на андроид приложение с активностью не во весь экран, а вроде окна на винде?
Android Переделать приложение для Андроид в приложение для ПК
Android Можно ли претендовать на должность Java программиста, если знать только яву под андроид?
Embarcadero - Мобильное приложение для Андроид Android
Приложение для группы Vk под Андроид Android
Android Как сделать андроид приложение для сайта?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Zuzik
232 / 217 / 37
Регистрация: 11.06.2012
Сообщений: 1,426
14.12.2014, 16:12     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #21
1 - жава, 2-ой - С/С++ возможно. И там и там крайней извращенный вариант.
Fulcrum_013
661 / 729 / 72
Регистрация: 14.12.2014
Сообщений: 5,698
Завершенные тесты: 3
14.12.2014, 16:22     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #22
Цитата Сообщение от Zuzik Посмотреть сообщение
Знания языка тоже немаловажная вещь в этой области.
Ну я ж и говорю - зная C++ ты уже вобщем то знаешь Java и PHP. С той лишь разницей что в плюсах нет удобной конструкции foreach ну это мелочи бо как вариант цикла for.

Добавлено через 7 минут
первый да джава. А второй - точно плюсы в вариации лень набирать дофига текста. после применмения препроцессора
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#define decl inline
#define Zero(V)V=0;
#define Za(V) memset(V,0,sizeof(V));
#define A(V) scalar A=V;
#define M(I,J) for (int I = 0; I < MatrixSize; I++)for (int J = 0; J < MatrixSize; J++){
#define RSij for (int i = 0; i < MatrixSize; i++)for (int j = 0; j < MatrixSize; j++)R[i][j]=
#define RSi for (int i = 0; i < DimensionCount; i++) R[i]=
#define VS(V) for (int i = 0; i < DimensionCount; i++) V+=
#define MS(V,N) for (int N = 0; N < MatrixSize; N++) V+=
#define SRi  Ri+=
#define SRij Rij+=
#define m1ij m1[i][j]
#define m1ji m1[i][j]
#define m2ij m2[i][j]
#define m1ik m1[i][j]
#define m2ki m2[i][j]
#define Rij R[i][j]
#define Ri  R[i]
#define Rx  R[0]=
#define Ry  R[1]=
#define Rz  R[2]=
#define Rw  R[3]
#define v1i  v1[i]
#define v2i  v2[i]
#define MR(I) for (int I = 0; I < MatrixSize; I++){
#define V(J) for (int J = 0; J < DimensionCount; J++){
#define UMp(Name) void decl Name(TMatrixData R,TMatrixData m1){
#define MMp(Name) void decl Name(TMatrixData R,TMatrixData m1, TMatrixData m2){
#define MVp(Name) void decl Name(TVectorData R,TVectorData v1, TMatrixData m1){
#define MSp(Name) void decl Name(TMatrixData R,scalar s, TMatrixData m1){
#define VVp(Name) void decl Name(TVectorData R,TVectorData v1, TVectorData v2){
#define Vp(Name) void decl Name(TVectorData R,TVectorData v1){
#define VVpS(Name) scalar decl Name(TVectorData v1, TVectorData v2){
#define VpS(Name) scalar decl Name(TVectorData v1){
#define VSp(Name) void decl Name(TVectorData R, scalar s, TVectorData v1){
#define MpS(Name) scalar decl Name(TMatrixData m1){
#define MMLp(Name) bool decl Name(TMatrixData m1,TMatrixData m2){
#define VVLp(Name) bool decl Name(TVectorData v1,TVectorData v2){
 
#define TV TVector
#define TM TMatrix
#define A1 a1.D
#define A2 a2.D
#define Rt rt.D
 
#define __BODY(Body) { Body
#define UOp(Name,P) CLS decl operator Name(T &a1)__BODY (T rt; P(Rt,A1) OK rt Ok)
#define USOp(Name,P) scalar decl operator Name(CLS &a1)__BODY (OKey (P(A1)))
#define BOp(Name,P) CLS decl operator Name(CLS &a1,CLS &a2)__BODY (CLS rt; P(Rt,A1,A2) OK rt Ok)
#define BDOp(Name,P)CLS decl operator Name(T1 &a1,CLS &a2) __Body (CLS rt; P(Rt,A1,A2) OK rt Ok)
#define DBOp(Name,P)CLS decl operator Name(CLS &a1,CLS &a2) __Body (CLS rt; P(Rt,A1,A2) OK rt Ok)
#define BCOp(Name,P)Type2 decl operator Name(CLS &a1,CLS &a2) __Body (P)
#define BLOp(Name,P)Type2 decl operator Name(CLS &a1,CLS &a2)
 
 
#define HatchX(v1,v2) v1[1]*v2[2]-v1[2]*v2[1];
#define HatchY(v1,v2) v1[2]*v2[0]-v1[0]*v2[2];
#define HatchZ(v1,v2) v1[0]*v2[1]-v1[1]*v2[0];
//positive wrap matrix index
#define Wp(N,v) int N=i+j; N=N<MatrixSize?N:N-MatrixSize; v*=m1[i][N];
//negative wrap matrix index
#define Wn(N,v) int N=i-j; N=N<0?MatrixSize-1+N:N; v*=m1[i][N];
#define Test if(
#define RS R+=
#define T(i) scalar i=0;
#define P(i) scalar i=1;
#define OK ;return
#define ok }
#define Ok ;}
#define Okey )return false
#define OKEY ;return true;}
#define Okeey ;}}
#define Okeeey ;}}}

получаем
Fulcrum_013
661 / 729 / 72
Регистрация: 14.12.2014
Сообщений: 5,698
Завершенные тесты: 3
14.12.2014, 17:01     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #23
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
void inline Inverse(TMatrixData& R, TMatrixData& m1) {
    for (int i = 0; i < MatrixSize; i++)
        for (int j = 0; j < MatrixSize; j++)
            R[i][j] = -m1[i][j];
}
 
 
void inline Transpose(TMatrixData& R, TMatrixData& m1) {
    if (R!=m1){
    for (int i = 0; i < MatrixSize; i++)
        for (int j = 0; j < MatrixSize; j++)
            R[i][j] = m1[i][j];
    }else{
       for (int i = 0; i < MatrixSize; i++)
        for (int j = i; j < MatrixSize; j++)
            R[i][j] = m1[i][j];
    }
}
 
void inline Identity(TMatrixData& R, TMatrixData& m1) {
    for (int i = 0; i < MatrixSize; i++)
        for (int j = 0; j < MatrixSize; j++)
            R[i][j] = i == j;
}
 
 
void inline Mul(TMatrixData& R, TMatrixData& m1, TMatrixData& m2) {
    for (int i = 0; i < MatrixSize; i++)
        for (int j = 0; j < MatrixSize; j++) {
            R[i][j] = 0;
            for (int k = 0; k < MatrixSize; k++)
                R[i][j] += m1[i][k] * m2[k][j];
        }
}
 
void inline Add(TMatrixData& R, TMatrixData& m1, TMatrixData& m2) {
    for (int i = 0; i < MatrixSize; i++)
        for (int j = 0; j < MatrixSize; j++)
            R[i][j] = m1[i][j] + m2[i][j];
}
 
void inline Sub(TMatrixData& R, TMatrixData& m1, TMatrixData& m2) {
    for (int i = 0; i < MatrixSize; i++)
        for (int j = 0; j < MatrixSize; j++)
            R[i][j] = m1[i][j] - m2[i][j];
}
bool inline Equal(TMatrixData& m1, TMatrixData& m2) {
    for (int i = 0; i < MatrixSize; i++)
        for (int j = 0; j < MatrixSize; j++)
            if (m1[i][j] != m2[i][j]) return false;
    return true;
}
bool inline NotEqual(TMatrixData& m1, TMatrixData& m2) {
    for (int i = 0; i < MatrixSize; i++)
        for (int j = 0; j < MatrixSize; j++)
            if (m1[i][j] != m2[i][j]) return true;
    return false;
}
 
void inline Mul(TMatrixData& R, float s, TMatrixData& m1) {
    for (int i = 0; i < MatrixSize; i++)
        for (int j = 0; j < MatrixSize; j++)
            R[i][j] = m1[i][j] * s;
}
void inline Div(TMatrixData& R, float s, TMatrixData& m1) {
    for (int i = 0; i < MatrixSize; i++)
        for (int j = 0; j < MatrixSize; j++)
            R[i][j] = m1[i][j] / s;
}
void inline Mul(TVectorData& R, TVectorData& v1, TMatrixData& m1) {
    for (int i = 0; i < MatrixSize; i++) {
        R.D[i] = 0;
        for (int j = 0; j < MatrixSize; j++)
            R.D[i] += v1.D[j] * m1[j][i];
    }
}
float inline Abs(TMatrixData& m1)
{
    scalar R;
    for (int i = 0; i < MatrixSize; i++) {
        float pp = 1;
        float pn = 1;
        for (int j = 0; j < MatrixSize; j++) {
            int k = i + j;
            k = k < MatrixSize ? k : k - MatrixSize;
            pp *= m1[i][k];
            int n = i - j;
            n = n < 0 ? MatrixSize - 1 + n : n;
            pn *= m1[i][n];
        }
        R += pp - pn;
    }
    return R;
}
float inline Dot(TVectorData& v1, TVectorData& v2){
    return v1.x * v2.x+v1.y * v2.y+v1.z * v2.z;
}
float inline Hatch(TVectorData& v1, TVectorData& v2) {;
    return v1.x * v2.y - v1.y * v2.x;
}
float inline Pow2(TVectorData& v1){
    return  v1.x * v1.x+v1.y * v1.y+v1.z * v1.z;
}
float inline Abs(TVectorData& v1){
    return sqrt(v1.x * v1.x+v1.y * v1.y+v1.z * v1.z);
}
 
void inline Mul(TVectorData& R, float s, TVectorData& v1) {
        R.x = v1.x*s; R.y = v1.y*s; R.z = v1.z*s;
}
 
void inline Div(TVectorData& R, float s, TVectorData& v1) {
        R.x = v1.x/s; R.y = v1.y/s; R.z = v1.z/s;
}
 
void inline Inverse(TVectorData& R, TVectorData& v1) {
    for (int i = 0; i < DimensionCount; i++)
        R.D[i] = -v1.D[i];
}
void inline Norm(TVectorData& R, TVectorData& v1) {
    float A = Abs(v1);
    R.x = v1.x / A; R.y = v1.y / A; R.z = v1.z / A; R.w = v1.w / A;
}
void inline WNorm(TVectorData& R, TVectorData v1) {
    if (fabs(v1.w)<1e-15) return;
    R.x = v1.x / v1.w; R.y = v1.y / v1.w; R.z = v1.z / v1.w; R.w = 1;
}
void inline Add(TVectorData& R, TVectorData& v1, TVectorData& v2) {
    R.x = v1.x + v2.x;R.y = v1.y + v2.y;R.z = v1.z + v2.z;
}
void inline Sub(TVectorData& R, TVectorData& v1, TVectorData& v2) {
    R.x = v1.x - v2.x;R.y = v1.y - v2.y;R.z = v1.z - v2.z;
}
void inline Cross(TVectorData& R, TVectorData& v1, TVectorData& v2) {
    R.x = v1.y * v2.z - v1.z * v2.y;
    R.y = v1.z * v2.x - v1.x * v2.z;
    R.z = v1.x * v2.y - v1.y * v2.x;
}
scalar inline Angle(TVectorData& v1, TVectorData& v2) {
       return acos((Dot(v1,v2)/sqrt(Pow2(v1)*Pow2(v2))));}
bool inline Equal(TVectorData v1, TVectorData v2) {
       return v1.x==v2.x&&v1.y==v2.y&&v1.z==v2.z&&v1.w==v2.w;
}
bool inline NotEqual(TVectorData& v1, TVectorData& v2){
     return v1.x!=v2.x||v1.y!=v2.y||v1.z!=v2.z&&v1.w!=v2.w;
}
 
TVector inline __fastcall operator-(TVector &a1, TVector &a2){TVector rt;Sub(rt.D, a1.D, a2.D);return rt;}
TVector inline __fastcall operator +(TVector &a1, TVector &a2){TVector rt;Add(rt.D, a1.D, a2.D);return rt;}
TVector inline __fastcall operator*(TVector &a1, TVector &a2){TVector rt;Cross(rt.D, a1.D, a2.D);return rt;}
TVector inline __fastcall operator /(TVector v1, scalar v2){TVector rt; Div(rt.D, v2, v1.D);return rt;}
TVector inline __fastcall operator*(scalar  v1,TVector &v2){TVector rt; Div(rt.D, v1, v2.D);return rt;}
TVector inline __fastcall operator*(TVector &v1, scalar v2){TVector rt; Mul(rt.D, v2, v1.D);return rt;}
 
 
__fastcall TVector::TVector(){D.x = 0.f;D.y=0.f;D.z=0.f;D.w = 1.f;};
__fastcall TVector::TVector(scalar ax, scalar ay, scalar az = 0){D.x=ax;D.y=ay;D.z=az;D.w = 1;};
__fastcall TVector::TVector(const TVector& V){D.x=V.x;D.y=V.y;D.z=V.z;D.w=V.w;};
float __fastcall TVector::Abs(){return ::Abs(D);};
inline TVector& __fastcall TVector::Normalize(){Norm(D, D);return *this;};
inline TVector& __fastcall TVector::WNormalize(){WNorm(D, D);return *this;};
inline TVector  __fastcall TVector::Normalized(){TVector r;Norm(r.D, D);return r;};
inline TVector  __fastcall TVector::WNormalized(){TVector r;WNorm(r.D, D); return r;};
inline TVector& __fastcall TVector::Inverse(){::Inverse(D, D); return *this;};
inline TVector& __fastcall TVector:: operator=(TVector V){D.x=V.x;D.y=V.y;D.z=V.z;D.w=V.w;return *this;}
inline TVector  __fastcall TVector::operator-(){TVector r;::Inverse(r.D,D);return r;}
 
inline float __fastcall TVector::operator~(){return Abs();}
 
inline TVector& __fastcall TVector::operator+=(TVector& v){Add(D,D,v.D); return *this;}
inline TVector& __fastcall TVector::operator-=(TVector& v){Sub(D,D,v.D);return *this;};
inline TVector& __fastcall TVector::operator*=(TVector& v){Cross(D,D,v.D);return *this;};
 
inline scalar __fastcall TVector::operator%(TVector& v){return Dot(D,v.D);};
inline scalar __fastcall TVector::operator/(TVector& v){return Hatch(D,v.D);};
inline scalar __fastcall TVector::operator^(TVector& v){return Angle(D,v.D);};
inline bool   __fastcall TVector::operator==(TVector& v){return Equal(D,v.D);};
inline bool   __fastcall TVector::operator!=(TVector& v){return NotEqual(D,v.D);};
 
inline TVector& __fastcall TVector::operator *= (scalar s){Mul(D,s,D);return *this;};
inline TVector& __fastcall TVector::operator /= (scalar s){Div(D,s,D);return *this;};
/*inline TVector& __fastcall TVector::operator += (scalar v);
inline TVector& __fastcall TVector::operator -= (scalar v);*/
 
 
inline TVector __fastcall operator * (TMatrix& m,TVector& v){TVector r; Mul(r.D,v.D,m.D); return r;}
inline TVector __fastcall operator * (TVector& v,TMatrix& m){
       TVector r;
       Mul(r.D,v.D,m.D);
       return r;
}
 
inline TMatrix __fastcall operator * (TMatrix& m1,TMatrix& m2){TMatrix r; Mul(r.D,m1.D,m2.D); return r;}
 
__fastcall TMatrix::TMatrix(){memset(D, 0, sizeof(TVectorData));}
__fastcall TMatrix::TMatrix(const TMatrix& m){memcpy(D,m.D,sizeof(TMatrixData));};
inline TMatrix& __fastcall TMatrix::Identity(){::Identity(D, D);return *this;};
inline TMatrix& __fastcall TMatrix::Transpose(){::Transpose(D, D);return *this;};
inline TMatrix& __fastcall TMatrix::operator =  (const TMatrix& m){memcpy(D, m.D, sizeof(TMatrixData));return *this;};
inline bool     __fastcall TMatrix::operator == (TMatrix& m){return Equal(D, m.D);};
inline bool     __fastcall TMatrix::operator != (TMatrix& m){return !Equal(D, m.D);};
inline TMatrix& __fastcall TMatrix::operator *= (float v){Mul(D, v, D);return *this;}
inline TMatrix& __fastcall TMatrix::operator /= (float v){Div(D, v, D);return *this;}
inline TMatrix& __fastcall TMatrix::operator *= (TMatrix& m){Mul(D, D, m.D);return *this;}
inline TMatrix& __fastcall TMatrix::operator += (TMatrix& m){Add(D, D, m.D);return *this;}
inline TMatrix& __fastcall TMatrix::operator -= (TMatrix& m){Sub(D, D, m.D);return *this;}
inline float __fastcall TMatrix::operator ~ (){return ::Abs(D);}

отакой изврат на яве похоже точно нельзя творить

Добавлено через 38 минут
Цитата Сообщение от Zuzik Посмотреть сообщение
Знания языка тоже немаловажная вещь в этой области
Ага. Зная к примеру асм x86 берешь просто табличку комманд от любого проца и вперед. Тут то же самое. Синтаксис Java и С++ отличается минимально, ну а библиотеки что там что там одни и те же. В любом случае при использовании любой библиотеки будешь постоянно по хелпам рыться сколько б лет ее не использовал. Ну и в Android SDK то ли где то на ихнем Developer network с год назад видел топик о том что хоть скорость выполнения прикладного C++ софта таки догнала Java, но разрабы андроида не рекомендуют использовать С++ для тех задач которые решаемы на Java.
Vladimirys
304 / 201 / 22
Регистрация: 16.01.2010
Сообщений: 571
15.12.2014, 01:24     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #24
Цитата Сообщение от Zuzik Посмотреть сообщение
Вот, ваши слова.
Хорошо, мои слова нашли. Там кавычек нигде не видно? Вот тут например?
Цитата Сообщение от Vladimirys Посмотреть сообщение
ибо С++ будет в большинстве случаев "переводиться" в Java.
Добавлено через 6 минут
Насчет ускорения, так его мы получим лишь в некоторых библиотеках. OpenGL - например. Ну и еще несколько.
Yury Komar
1940 / 1849 / 291
Регистрация: 27.01.2014
Сообщений: 3,327
Завершенные тесты: 1
15.12.2014, 01:27     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #25
Carpe-diem, если Basic знаешь, лучший вариант будет наверное Basic4Android...
Сам начал его изучать и не нарадуюсь...
быстро, удобно и отладка по wifi на реальном телефоне имеется...
Zuzik
232 / 217 / 37
Регистрация: 11.06.2012
Сообщений: 1,426
15.12.2014, 10:28     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #26
Цитата Сообщение от Vladimirys Посмотреть сообщение
Хорошо, мои слова нашли. Там кавычек нигде не видно? Вот тут например?
Хорошо, скажите мне идиоту , что же значат ваши кавычки?
Vladimirys
304 / 201 / 22
Регистрация: 16.01.2010
Сообщений: 571
15.12.2014, 12:44     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #27
Собственно, отвечал я не вам, поэтому и понимать написанное вам не нужно. Вам так же ответил что имел ввиду - Java Native Interface. Кавычки говорят о том, что никакого преобразования, на самом деле не происходит. Но одновременно, сам по себе Java Native Interface - может вносить свои глюки и косяки, с которыми придется разбираться.
Yury Komar
1940 / 1849 / 291
Регистрация: 27.01.2014
Сообщений: 3,327
Завершенные тесты: 1
15.12.2014, 15:23     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #28
Carpe-diem, и кстати здесь раздел имеется. Только очень мало инфы, но изучив труды Programmera жизнь наладится и сможешь писать андроид софт со временем любого уровня, надеюсь
Glevera
14 / 14 / 1
Регистрация: 29.04.2012
Сообщений: 148
17.12.2014, 20:46     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #29
Carpe-diem, впрочем как многие здесь отвечу
1) Да
2) Java
Сам вторую неделю набиваю руку в Android Studio после работы только на C#. Затраты на переход с одного языка на другой минимально возможные на этой планете. Дольше объяснять, чем перейти.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
17.12.2014, 23:09     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #30
Цитата Сообщение от Zuzik Посмотреть сообщение
ибо С++ будет в большинстве случаев "переводиться" в Java.
Вставлю и свои "5 копеек". (тема для меня интересная, давно изучаю, хотя еще активно не использую)
Никто никуда не "переводится"!
Есть низкоуровневые команды, работающие напрямую с процессором и есть команды доступа к "интерфейсам" ОС.

Хотите сделать фотку - вызываете интерфес фотоаппарата через ява команды. Из С++ должны отправить "в верхние слои" свою команду, ОС ее обработает (как ява-метод) и вернет Вам (в с++) матрицу с фоткой. Эту матрицу уже можете гонять на своих сверхбыстрых обработках в С++.

С++ ближе к ядру и процессору, поэтому работает быстрее. Полезно на ускорениях обработок и на шифровании (взломать исходники на порядки тяжелее). Говорят что можно писать еще некое подобие "драйверов" и прямого доступа к ним, но нигде не видел (хотя видел с++ исходники для доступа к закрытым командам управления 2й сим-картой на китайских смартах).

В обычной работе на 99% идет работа с дийзайном и интерфейсами. Исключение - игрушки. Там скорость обработки и отрисовки картинок важнее чем "красивость кнопочек".

C# - НЕ язык для андроида! Как и паскаль, лисп, маткад и PHP. Работает только через "фреймворки", "движки" или интерпретаторы. Встроен в один из известных игровых движков. Но для обычных программ - изврат и вечные глюки или ограничения.

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

Могу лишь добавить еще что С++ под андроид НАМНОГО медленнее собирается чем под виндой! Лично для меня - это бич всей андроид-технологии и пока не знаю как это обойти... И подозреваю что гугл в этом направлении (ускорение сборки) тоже двигаться не планирует.
Fulcrum_013
661 / 729 / 72
Регистрация: 14.12.2014
Сообщений: 5,698
Завершенные тесты: 3
18.12.2014, 13:47     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #33
Цитата Сообщение от Tester64 Посмотреть сообщение
Это уже что-то из отдела фантастики... Слышал что были попытки обратного - ява команды пытались скомпилить в более плотный с++ код. Но не наоборот!
Я имею в виду не трансляцию исходников, а замену кода в который компилится.
Это из области замены кодогенератора в компиляторе. Собственно говоря компилятор состоит из парсера, кодогенератора и оптимизатора. Комбинируя эти компоненты по разному можно получить все что угодно - хоть Visual Basic для z80 хоть Lisp для CUDA, хоть Fortran для Java машины. Любой процессор, как реальный, так виртуальный (Java-машина) как был так и остался машиной Тюринга. Точно так же - подменой алфавита кодогенератора осуществляется переключение под разные таргеты для компиляции. Вообще насколько понимаю Суть технологии Java состоит в выносе кодогенератора из компилятора в среду выполнения.
Цитата Сообщение от Tester64 Посмотреть сообщение
ИМХО, я довольно детально объяснил основные возможности с++ под андроид. Дальше пусть автор вопроса для себя решает.
Согласен.
Tester64
395 / 356 / 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-консоли).
Проще сделать парсер-парсер между языками! Это было проделано для Делфи-СБилдер много лет назад. И если бы проект не забросили тогда-же, и поддержали гуру этих языков, возможно он бы развился и оставался актуальным.
Fulcrum_013
661 / 729 / 72
Регистрация: 14.12.2014
Сообщений: 5,698
Завершенные тесты: 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 меняется не только парсер но и алфавит таргета. Залез только что в мануал по байт-коду. Выглядит абсолютно как выходной код парсера.
Fulcrum_013
661 / 729 / 72
Регистрация: 14.12.2014
Сообщений: 5,698
Завершенные тесты: 3
19.12.2014, 20:36     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать? #36
Да кстати
Цитата Сообщение от Tester64 Посмотреть сообщение
Это уже что-то из отдела фантастики... Слышал что были попытки обратного - ява команды пытались скомпилить в более плотный с++ код. Но не наоборот!
Да кстати насчет компиляции с С++ в байт-код
компиляции с С++ в байт-код
Tester64
395 / 356 / 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 назад сам мечтал написать свой язык-транслятор (под одну задачу, но "с запасом") и искал себе язык для пользователей... Сильно изучил тему трансляторов и переводов с языка на язык! Там ОЧЕНЬ много подводных камней! Можно сделать перевод простых конструкций, но для сложных нужно потратить уйму часов спецам высокого уровня. А результат скорее всего будет никому не нужен...

Не по теме:

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

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

Просто зацепило когда так неудачно сравнили Делфи с С++ (как неудачное "отслоение" от с++). Я на него много лет потратил. Из-за его "плюшек" (готовые компонеты, шикарное сообщенство опенсорсных процедур, скорость компиляции, простота, безглючность) долго не мог на более платформо-независимый С++ перейти (хотя планировал кодить еще под "покет"). И сейчас, если нужно по быстрому наваять утилиту с формочками и не тяжелой логикой, хватаюсь за делфи...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2014, 20:42     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать?
Еще ссылки по теме:
Android На чем писать сервер для клиент на Андроиде
Андроид приложение для интернет магазина на движке Magento Android
Android Андроид-приложение для интернет-магазина. С чего начать?
Кто чем пользуется для разработки приложений под Андроид? Android
Приложение на андроид для поиска вакансий по Белоруссии. С чего начать? Android

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

Или воспользуйтесь поиском по форуму:
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 жизнь наладится и сможешь писать андроид софт со временем любого уровня, надеюсь
Жизнь, изучающая чьи-то труды - это сильно. Берущий с полки книгу листок на этом фоне меркнет.
Yandex
Объявления
20.12.2014, 20:42     Можно ли написать приложение для Андроид на С# или С++? И если да, то на чем лучше писать?
Ответ Создать тему
Опции темы

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