LINUX.ORG.RU

Под андроид теперь можно официально писать нативные приложения на C/C++

 ,


0

0

SDK, а вернее NDK(Native developement kit) включает заголовочные файлы для

  • libc
  • libm (математическая библиотека)
  • JNI(взаимодействие с java-кодом)
  • libz (ZLib)
  • liblog для отправки отладочных сообщений

собирается gmake'ом под ARMv5TE и работает на win 32/64, mac os x 10.4+ и linux 32/64

Скачать

>>> Подробности в блоге разработчиков

★★★★

Проверено: boombick ()

Ответ на: комментарий от VoDA

> в java ++i работает однозначно, как и i++.
Да. Но если спуститься на землю, и вспомнить что любителей писать в стиле
> foo(++i,++i,++i);

свыше 9000, то однозначность использования i++ становится ни разу не определяющей ибо интерпретируются новыми разработчиками совсем не однозначно, на порядки снижая читабельность кода, производительность работы новичков и новоприбывших в проект.

"Деды" и "Отцы" любили по-началу изобилировать подобными выкрутасами ввиду отсутсвия в джаве менее примитивных синтаксических конструкций. Поясню: по началу у любого начинающего джависта всплывает мысль в голове о том, как бэ сделать свой код по-компактнее и по-скорострельнее. Громозскость джавы оказывает гипертрофирующее влияние на это желание.

зы: Вообще, тот кусок кода, который был упомятнут выше - канонический пример быдлокода безотносительно языка программирования.

shahid ★★★★★
()
Ответ на: комментарий от alx_me

>от оптимизации зависит.

> -O0 будет по-моему 1 2 3 -O3 будет 3,3,3

еще и от компилятора. проверяли на MS Studio - выдал 3,3,3

А в java - однозначно. Как и i+++++i;

VoDA ★★
()
Ответ на: комментарий от shahid

>> в java ++i работает однозначно, как и i++. >Да. Но если спуститься на землю, и вспомнить что любителей писать в стиле >> foo(++i,++i,++i); >свыше 9000, то однозначность использования i++ становится ни разу не определяющей ибо интерпретируются новыми разработчиками совсем не однозначно, на порядки снижая читабельность кода, производительность работы новичков и новоприбывших в проект.

ХЗ. у нас новички интерпретировали однозначно. Багов на этой почве не было.

Это к слову о: >Дядя, если хочешь убрать "неоднозначные техники", то вырежи из джавы всякие i++, ++i.

>"Деды" и "Отцы" любили по-началу изобилировать подобными выкрутасами ввиду отсутсвия в джаве менее примитивных синтаксических конструкций. Поясню: по началу у любого начинающего джависта всплывает мысль в голове о том, как бэ сделать свой код по-компактнее и по-скорострельнее.

Видимо я уже этих "Отцов" не застал. Хотя в конторе есть люди по 10 лет непрерывно java & javaEE использующие.

Код не нужно делать КОМПАКТНЕЕ!!! он должен быть ЧИТАБЕЛЬНЕЕ!! Кому нужен компактный код - ХЗ, может только для драйверов да встраиваемых устройств.

VoDA ★★
()
Ответ на: комментарий от VoDA

> Код не нужно делать КОМПАКТНЕЕ!!! он должен быть ЧИТАБЕЛЬНЕЕ!!

Ну разве это не прекрасно, когда код метода с лихвой полностью 
помещается в область на экране и при этом остается читабельным?

Вот, набыдлокодил закрытыми глазами: 

джава.
public static final int SIZZE = 100;
int array1[] =  new int[SIZZE];

for(int i, i<SIZZE, i++) {
    array[i] = new int[SIZZE]
    for(int j, j<, j++) {
        array[i][j] = init_element(array, i, j);
    }
}

питон...
SIZZE = xrange(0, 100)
array1 = [[init_element(x, y) for x in SIZZE] for y in SIZZE]

Можете уличить меня в злостном быдлокодерстве и сравнивании
неизменяемых массивов джавы с динамическими списками в питоне - 
я не обижусь :)

shahid ★★★★★
()

ну наконец то гугль услышал наши молитвы. Теперь ждем когда эту жабу просту выпихнут к чертям

firsttimeuser ★★★★★
()
Ответ на: комментарий от ef37

>Я уж не знаю насчет БК, тот же ZX Spectrum благодаря наличию встроенного интерпретатора BASIC и его сравнительной простоте, можно научить куда большему, чем "эти мудафоны", для программирования которых ничего сопоставимого нет.

А что, ZX Spectrum уже может полупрозрачный труколор на уровне каждого пикселя экрана? Как там с проигрыванием AAC/AAC+? Нити параллельного исполнения программного кода осиливает или как?
(сотовые дибильники такое осиливали ещё в 2003 году, а с появлением J2ME MIDP 2.0/CLDC 1.1 решали математические уравнения с плавающей точкой и столкновения спрайтов на аппаратном уровне)

iZEN ★★★★★
()
Ответ на: комментарий от shahid

Just use Scala, Luke!

Вообще, это так. Но во-первых - двумерные массивы почти всегда лучше заменять одномерными.Если такой код встречается часто, можно замутить функцию. Минимализм в синтаксисе джавы - это осознанный минимализ. Минусы и плюсы очевидны.

theos ★★★
()
Ответ на: комментарий от shahid

>Язык джавы стал удобным, хотя даже элементарного в нём до сих пор нет: ни перегрузки операторов, ни множественного наследования...

Концепция "наследования" весьма противоречива и неудобна/неоднозначна/ в купе с политикой видимости методов. От наследования отказываются в пользу миксинов и лямбда-выражений даже в самой Java, естественно, прибегая к ухищрениям самого языка.

iZEN ★★★★★
()
Ответ на: комментарий от shahid

питон...
SIZZE = xrange(0, 100)
array1 = [[init_element(x, y) for x in SIZZE] for y in SIZZE]

Оно и понятно, что с закрытыми глазами, у тебя ж генератор SIZZE исчерпается еще на первом внутреннем списке :)

anonymous4
()
Ответ на: комментарий от shahid

>Язык джавы стал удобным, хотя даже элементарного в нём до сих пор нет: ни перегрузки операторов, ни множественного наследования...

Ни то ни то не нужно. Особенно в с++ виде.

r ★★★★★
()
Ответ на: комментарий от dave

>Java - таки удобный язык. Поддерживаю предыдущего оратора.

Жаба язык убогий. Как жабист говорю. Но не по причине "отсутствия перегрузки операторов и множественного наследования".

r ★★★★★
()
Ответ на: комментарий от r

> Жаба язык убогий. Как жабист говорю. Но не по причине "отсутствия перегрузки операторов и множественного наследования".

Не только по этой причине, конечно.

tailgunner ★★★★★
()
Ответ на: комментарий от Evtomax

>> А сторонники свободного ПО вообще считают, что информация не может быть собственностью. Но законодательство так не считает, и поэтому приходится при помощи копилефт-лицензий использовать существующее копирастическое законодательство для защиты свободной информации от присвоения.

>Вот главный смысл свободного ПО, который многие не понимают!


Еще один смысл в том что оно имеет возможност так делать имеено благодаря закону о копирайте. Если бы его не было - небыло бы никакого "свободного" ПО (копилефт форсится законом о копирайте - нет закона о копирайте - все пермиссивно).

r ★★★★★
()
Ответ на: комментарий от anonymous4

> у тебя ж генератор SIZZE исчерпается еще на первом внутреннем списке :)

Точно) thnx

shahid ★★★★★
()
Ответ на: комментарий от anonymous4

> понятно, что с закрытыми глазами, у тебя ж генератор SIZZE исчерпается еще на первом внутреннем списке :)

Да неужели? Ты проверил?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Ох, действительно, xrange object не так прост, как кажется. 

>>> z = xrange(3)
>>> [[(x, y) for x in z] for y in z]
[[(0, 0), (1, 0), (2, 0)], [(0, 1), (1, 1), (2, 1)], [(0, 2), (1, 2), (2, 2)]] 

Однако 

>>> z = iter(xrange(3))
>>> [[(x, y) for x in z] for y in z]
[[(1, 0), (2, 0)]] 

Так что нужно быть внимательным и не такие неоднозначности лучше не допускать, ящитаю :)

anonymous4
()
Ответ на: комментарий от shahid

>Можете уличить меня в злостном быдлокодерстве и сравнивании
>неизменяемых массивов джавы с динамическими списками в питоне - 
>я не обижусь :)

Какую-то пургу ты написал:

int size = 100;
int array[][] = new int[size][size];
for( int i = 0; i < size; i++ ) for( int j = 0; j < size; j++ ) array[i][j] = init_element(i,j);

r ★★★★★
()
Ответ на: комментарий от tailgunner

>Не только по этой причине, конечно.

Когда говорят про множественное наследование и перегрузхку операторов имеют ввиду плюсы обычно. В таком виде оно нафиг не нужно.

Множественное наследование нужно только в виде а-ля скальные traits. А перегрузка операторов нужна - нужен symbolic freedom + приоритеты методов. Хаскельные приоритеты + скальный синтаксис.

r ★★★★★
()
Ответ на: комментарий от r

> Когда говорят про множественное наследование и перегрузхку операторов имеют ввиду плюсы обычно.

Когда говорят про перегрузку операторов, обычно имеют в виду возможность дать функции имя стандартного математического оператора вроде "+".

> В таком виде оно нафиг не нужно.

Люди пользуются => им это нужно.

> Множественное наследование нужно только в виде а-ля скальные traits.

Надеюсь, сюда придут те, кто скажет "ООП нинужно".

tailgunner ★★★★★
()
Ответ на: комментарий от r

>>А перегрузка операторов нужна

>s/нужна/не нужна/ естественно.

А можно объяснить юному, неразумному жабокодеру, почему перегрузка операторов так плоха? Потому как иногда уж очень хочется ее иметь.

Toll ★★
()
Ответ на: комментарий от tailgunner

>Когда говорят про перегрузку операторов, обычно имеют в виду возможность дать функции имя стандартного математического оператора вроде "+".

Как это делают в плюсах. Иначе бы так и говорили :-p.

>Люди пользуются => им это нужно.


Люди часто пользуются инструментом какой есть а не какой нужен :-p

>Надеюсь, сюда придут те, кто скажет "ООП нинужно".


А я их пошлю к Волфенгагену у которого даже комбинаторы - объекты:)

r ★★★★★
()
Ответ на: комментарий от Toll

>А можно объяснить юному, неразумному жабокодеру, почему перегрузка операторов так плоха? Потому как иногда уж очень хочется ее иметь.

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

r ★★★★★
()
Ответ на: комментарий от r

>>Надеюсь, сюда придут те, кто скажет "ООП нинужно".

Необходимость в ООП спорна.

>А я их пошлю к Волфенгагену у которого даже комбинаторы - объекты:)


Объекты — часть ООП, но само ООП гораздо шире.

Объекты с миксинами горазо полезнее и не нарушают инкапсуляцию в отличие от наследования. Компактность, завершённая функциональность и целостность кода достигаются без наследования.

iZEN ★★★★★
()
Ответ на: комментарий от r

> Жаба язык убогий. Как жабист говорю. Но не по причине "отсутствия перегрузки операторов и множественного наследования".

А ты знаешь пример неубогого языка? Я серьезно спрашиваю. Мне как программисту с глубоким математическим бэкграундом все языки программирования в той или иной степени кажутся убогими по сравнению с тем же языком математики. Правда, последний стал уже забываться за отсутствием практики... Только мат. логику все чаще использую.

Мне в Java нравится минимализм, о чем здесь уже писали. Хотя я бы добавил пару удачных вещей из .NET :) Например, структуры, которые еще иногда называются value object.

dave ★★★★★
()
Ответ на: комментарий от pazak

> У меня Г1
Где брал? А прошивку детивоизировал? А оператор-лок?
На него реально поставить что-нибудь вроде OpenMoko, NetBSD или Ubuntu чтоб выполнять стандартые Posix тулзы типа dd, cat, ps, grep, sed и всякие perl-ы и самописные тулзы на чистом C?

Xenius ★★★★★
()
Ответ на: комментарий от dave

>Мне в Java нравится минимализм, о чем здесь уже писали. Хотя я бы добавил пару удачных вещей из .NET :) Например, структуры, которые еще иногда называются value object.

В JavaSE 6.0 аллокация локальных объектов методов на стеке, а не в куче.

iZEN ★★★★★
()
Ответ на: комментарий от VoDA

>>от оптимизации зависит.
>> -O0 будет по-моему 1 2 3 -O3 будет 3,3,3
>еще и от компилятора. проверяли на MS Studio - выдал 3,3,3

Ндя специалисты блин. Проверяли... :)

rGlory
()
Ответ на: комментарий от Xenius

> На него реально поставить что-нибудь вроде OpenMoko, NetBSD или Ubuntu чтоб выполнять стандартые Posix тулзы типа dd, cat, ps, grep, sed и всякие perl-ы и самописные тулзы на чистом C?

на мой минг реально. собсно стоит ангстром и все твой желаемые тулзы, но... я так и не понял нах оно мне в телефоне ))

Rastafarra ★★★★
()
Ответ на: комментарий от dave

>А ты знаешь пример неубогого языка? Я серьезно спрашиваю.

Я знаю языки менее убогие. И знаю чего надо добавить в жабу чтобы сделать его менее убогим.

>Хотя я бы добавил пару удачных вещей из .NET :)


В жабу надо добавить замыкания (со ссылками на методы аля-FCM с синтакисом а-ля BGGA), трайты, структурные типы, таплы, символьную свободу, скалоподобный инфикс с приоритетами, возможно open classes, tailrecursion, runtime generics.

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

ну и добавить кросплатформенный jdirect чтобы убрать геморой с JNI.

Это все без изменений центральной идеологии языка.

r ★★★★★
()
Ответ на: комментарий от r

Как вариант, можно сменить копирайтное законодательство на копилефтное -- запрещающее использовать в лицензиях на ПО собственнические ограничения.

А какие преимущества могут быть у закрытого софта в мире без копирайта? Может его в таких условиях писать будет невыгодно?

Xenius ★★★★★
()
Ответ на: комментарий от anonymous4

>> питон... >> SIZZE = xrange(0, 100) >> array1 = [[init_element(x, y) for x in SIZZE] for y in SIZZE]

> Оно и понятно, что с закрытыми глазами, у тебя ж генератор SIZZE исчерпается еще на первом внутреннем списке :)

Ды!? )))

А у меня почемуто ничего не исчерпалось )))

Alesh
()
Ответ на: комментарий от iZEN

> В JavaSE 6.0 аллокация локальных объектов методов на стеке, а не в куче.

Этого мало. Для полноты еще дженерики должны поддерживать структуры. Иначе получаем оверхед из-за боксинга.

dave ★★★★★
()
Ответ на: комментарий от Xenius

>Как вариант, можно сменить копирайтное законодательство на копилефтное -- запрещающее использовать в лицензиях на ПО собственнические ограничения.

"Свобода, бл9tb, свобода, бл9tb, свобода" (С) Лесь

Ты уже придумал экономически обоснованную модель для всего существующего софта в рамках GPL? Там где каждый программист получает деньги за свою работу, а не днем работает в котельной, а по вечерам кодит для сообщества?

>А какие преимущества могут быть у закрытого софта в мире без копирайта?


Те же самые что сейчас.

r ★★★★★
()
Ответ на: комментарий от Rastafarra

Так это Ангстром...
Я хочу хороший девайс с бесплатной ОС как прошивкой, которую можно сменить на свободную и/или которая изначально свободная. А минг 320x240? Маловато-с. Если бы аппаратная клава была еще бы можно, а так -- нафиг.

Xenius ★★★★★
()
Ответ на: комментарий от linux4ever

>В лялике есть куча тулкитов с поддержкой framebuffer, нафига они эту жабу запихали?

Потому что в лялихе куча, эту кучу надо одновременно на андроиде хранить, место тратить, а в жабе один Swing

Karapuz ★★★★★
()
Ответ на: комментарий от Xenius

дебиан можно в чрут. консольные тулзы на сях можно. Всякие грепы и дд обычно в кастомных прошивках и так есть с BusyBox'ом (BusyBox v1.13.2 (2009-01-20 22:33:28 CST) multi-call binary).

thevery ★★★★
() автор топика
Ответ на: комментарий от r

>Ты уже придумал экономически обоснованную модель для всего существующего софта в рамках GPL?

Для большинства софта есть полноценные или чуть менее, чем полноценные свободные аналоги, так что большая часть существующего проприетарного софта станет просто не нужно. Разработка свободного узкоспециализированного софта (всяких CAD и т.п.) может финансироваться непосредственно теми, кто его будет использовать, они деньгами не обделены, т.к. выкладывают на проприетарщину по несколько тысяч долларов за каждое рабочее место раз в несколько лет. Останутся только всякие игры, на которых можно заработать, если брать плату за онлайн-сервисы, продавать фанатскую атрибутику и т.п.

А в мире без копирастических законах проприетарщикам будет не на что существовать, т.к. особо никто платить им не будет, раз можно законно не платить.

Ttt ☆☆☆☆☆
()
Ответ на: комментарий от Xenius

>Я хочу хороший девайс с бесплатной ОС как прошивкой, которую можно сменить на свободную и/или которая изначально свободная.

Android Dev Phone

thevery ★★★★
() автор топика
Ответ на: комментарий от r

Свободного софта уже сейчас достаточно для подавляющего большинства задач. Еще бы спецификации на железо и драйвера открывали и не мучали юзеров и разработчиков всякой ерундой с патентами, копирайтами и лицензиями -- и венде капец.

Кто сказал GPL? А вообще, заказные программы и модификации. Если нескольким организациям нужно одно и то же -- можно коллективные заявки. Еще можно использовать финансирование избранных проектов из бюджета, но только для проектов с общедоступными качественными исходниками. Для наукоемких прог -- как для научных исследований.
Модели придуманы до меня, я ими детально не интересовался.
> те же самые что сейчас

А какие все-таки? Думаете, в мире без копирайта закрытые программы не загнутся?

Xenius ★★★★★
()
Ответ на: комментарий от thevery

> Android Dev Phone
А где я его возьму в РФ, да еще в моей провинции?
Да и наверное лучше разлоченный/перепрошитый на какой-нибудь Ångström g1 -- рисунок на корпусе больше нравится.
Кстати, мне бы еще чтоб можно было печатать одной рукой и вслепую, как я это делаю на нокии с цифровой клавой...

Xenius ★★★★★
()
Ответ на: комментарий от Ttt

>Для большинства софта есть полноценные или чуть менее, чем полноценные свободные аналоги, так что большая часть существующего проприетарного софта станет просто не нужно.

Наивный как ребенок который думает что молоко берется из пакетов. Ты знаешь чем по жизни занимается тот кто их разработал? Нет? Изучи на досуге. Проще всего сделать это для проекта KDE - там в интерьвюшках контрольный вопрос задают "получаете ли вы деньги за работу над KDE" - посмотри какой незначительный процент получает. Остальные по твоему строители и дворники? Или таки они гдето в другом месте вказывают программистами совсем не на открытых проектах, что дает им возможность работать над открытыми.

>Разработка свободного узкоспециализированного софта (всяких CAD и т.п.) может финансироваться непосредственно теми, кто его будет использовать, они деньгами не обделены, т.к. выкладывают на проприетарщину по несколько тысяч долларов за каждое рабочее место раз в несколько лет.


А что сейчас им мешает профинансировать? Им бедненьким не дают? Или ты прийдешь к ним со штыками и под ружьем заставишь? Знаешь сколько стоит разработка тулзы типа Softimage?

В чем суть массового коробочного продукта знаешь? В разделении стоимости между кучей покупателей. А как же ее разделить если оно GPL? А никак.


>если брать плату за онлайн-сервисы,


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

>продавать фанатскую атрибутику и т.п.


Шикарный вариант бизнеса. Скажи еще реклама сайта в гугле.

>А в мире без копирастических законах проприетарщикам будет не на что существовать, т.к. особо никто платить им не будет, раз можно законно не платить.


В мире без копирастических законов неначто будет существовать софтверным команиям. И потому не будет софтверных компаний.

Вот пока ты экономически не обосновал софтверный бизнес - твое предложение сводится не к открытию исходников, а к фактическому запрету на производство.

r ★★★★★
()
Ответ на: комментарий от thevery

>Для большинства софта есть чуть менее, чем полностью унылые свободные аналоги

Назови мне, какие программы, кроме игр, не имеют хороших свободных аналогов и предназначены только для домашнего пользования или для мелких предприятий, в общем для тех, кому трудно скооперироваться и профинансировать разработку. Разве что программы машинного перевода.

Ttt ☆☆☆☆☆
()
Ответ на: комментарий от thevery

Таки вы сторонник свободного или несвободного софта?
И всё-таки, чем APL (объективно) лучше GPL для разработчика _свободных_ программ?
А несвободные программы не нужны, так как ими все равно не хочется пользоваться, да и опасно (вдруг троян?)

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

>А где я его возьму в РФ, да еще в моей провинции?

ebay итд.

>Да и наверное лучше разлоченный


Android Dev Phone изначально разлочен, кстати, но разлочка стоит недорого.

thevery ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.