Как научиться писать под Android без опыта программирования

Добрый день.

Я хочу создать приложение под Android, но совершенно не представляю, получится ли у меня хоть что-нибудь — никакого опыта программирования у меня никогда не было.

Как поступать, если ты новичок, и хочешь заниматься именно разработкой приложений? С чего начать?

Спасибо.


Отвечает Григорий Клюшников, бывший Android-разработчик «ВКонтакте»

Привет.

К сожалению (или к счастью), написать нативное приложение с нуля практически невозможно.

Начинать свой путь программиста с изучения Java я бы не советовал — слишком многое нужно будет понять сразу. Лучше начинать с языка С — это позволит разобраться в основных принципах программирования, а уже потом поверх этого можно учить Java.

Если очень уж хочется — у Oracle есть очень хорошие уроки по Java, а на developers.android.com расскажут, как её непосредственно к Android применять.

Если в процессе разработки у вас возникнут какие-то конкретные вопросы — ответы на них наверняка можно будет найти на Stack Overflow.

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

Никаких лайфхаков тут, увы, нет.

0
68 комментариев
Написать комментарий...
Федор Кузьмич

Что за бред. Кто придумал, что выучить андроид проще, если начать с си?) Это тоже самое, что учить немецкий, чтобы говорить на французском. Бери и учи андроид сразу.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Вадим Пушш

Вы полагаете, си - язык функционального программирования? Ой! Вы такой крутой эксперт! Объясните мне что такое монады. Это ведь так просто. И чтобы я понял. И где они в си.

Ответить
Развернуть ветку
Koncopd

Процедурное часто путают с функциональным почему-то.

Ответить
Развернуть ветку
Вадим Пушш

Процедурное... Это?..
Вы имеете в виду императивное? Чорт, чорт, чорт. Как можно императивное программирование спутать с функциональным?! Посмотрел аккаунт чувака, он утверждает, что он андроидоразработчик и участвовал в конкурсе на официальный клиент телеграмма! Надеюсь, конкурс выиграл не он ;).

Ответить
Развернуть ветку
Гала Перидоловна

Основная идея функционального программирования - откладывать изменение переменных до тех пор, пока это возможно. Императивного - постоянно изменять. Монады по своей сути являются следствием того, что результат выполнения отложенных вычислений не определен. Реализовать их можно в любом императивном языке(Java - Optional).

Ответить
Развернуть ветку
Илья Андреевич

Поддерживаю Галю! С памятью ой как любят даже на интервью вопросы задавать. А когда изучал программирование (год всех спрашивал и рыл инфу)- и свифт пытался и джавараш пытался и джаваскрипт и с веба с нуля хтмл и си эсэс пытался... В итоге пошел на курсы от Гарварда (там точно не дурачки) и препод тоже не дурачок, начали с Си, через 5 недель написал свой первый сервер, на шестой неделе пояснили синтаксис PHP, на 7-9 неделе изучили хмтл-си эсэс-джаваскрипт, на 10 неделе научили соединять с помощью пхп весь этот джаваскрипт с сервером и еще 3 недели спустя на google maps API сделал приложение, которое презентовал и все офигели от счастья. Ну и по пути рассказали про JQuery и Ajax. Вот и история трех месяцев. Сделано без интерфейса несколько простых программок и игрушка, объяснены принципы и понимаю, как работает память.
Отличный ответ, полностью поддерживаю.

Ответить
Развернуть ветку
Вадим Пушш

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

Ответить
Развернуть ветку
Гала Перидоловна

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

Ответить
Развернуть ветку
Вадим Пушш

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

Ответить
Развернуть ветку
Илья Андреевич

или Галу :) извиняюсь)

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Гала Перидоловна

При чем тут функциональное программирование? C дает понимание как работать с памятью. Без понимания того факта, что в Java объекты являются ссылками люди будут городить говнокод.

Ответить
Развернуть ветку
Федор Кузьмич

То есть просто озвучить что в джава обьекты являются ссылками нельзя? Нужно учить си?)

Ответить
Развернуть ветку
Гала Перидоловна

Нет, нельзя. Нормальный разработчик всегда задастся вопросом что же такое ссылка и дальше придет к пониманию того, что он не знает ничего про модель памяти Java. И поймет что происходит с памятью во время удаления ссылки. Общался с Android разработчиком, который не понимал что такое стэк и что такое хип. Вообще.

Ответить
Развернуть ветку
Федор Кузьмич

вот именно, нормальный разработчик. Если разработчик не нормальный, то хоть в лоб, хоть по лбу, ни си, ни что-либо еще не поможет. Поэтому рассказы с чего нужно учить %языкпрограммирования% не имеют смысла.

Толковый человек зам заинтересуется и изучит что нужно, даже если он сходу сел за андроид.

Ответить
Развернуть ветку
Гала Перидоловна

Так может вообще не нужно людям ничего говорить? Пусть методом тыка сами разбираются. Останутся же самые лучшие.

Ответить
Развернуть ветку
65 комментариев
Раскрывать всегда