Лого vc.ru

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

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

Добрый день.

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

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

Спасибо.


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

Привет.

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

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

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

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

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

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

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

Популярные статьи
Показать еще
Комментарии отсортированы
как обычно по времени по популярности

они только рассматривают использование Swift в качестве нативного языка для платформы, но от Java пока никто никуда не уходит.

Впрочем, тот же Swift изучить тоже будет годным решением - для написания приложения на iOS.

Тут три пути: либо Игры, либо BigData, либо Web.
Игры - это C# (Unity, Xamarin)
BigData - это Python, SQL
Web - JavaScript
Полагаю, ты хочешь зарабатывать, а не просто разрабатывать приложения.
БОПтизм - вот истинное вероучение для программиста, который хочет завоевать мир!

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

0

На днях статья была, что у Google в планах юзать опенсорсный Swift как замену Java

В статье написано (если это та статья): "Sources tell... Google is considering making Swift a “first class” language for Android..." "...sources say Swift is not meant to replace Java, at least initially"

0

Если эти слухи действительны (а вполне себе может быть, именно Swift) да такой транзашн в данной ситуации займет лет 7 - 10. В частности Apple сообщает что будет поддерживать Obj-C еще 10+ лет, и еще много кто не хочет от нее отказваться. Для гугла загнуть Java - это значит загнуть очень большую инфраструктуру.

0

Конструкторы юзай

0

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

Немецкий и французский — не совсем корректное сравнение. Функциональное программирование как минимум проще в плане обучения, чем объектно-ориентированное. Так что если и сравнивать, то для абсолютно незнакомого с программированием человека будет разница как между английским и арабским.

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

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

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

0

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

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

0

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

0

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

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

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

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

0

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

0

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

0

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

0

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

Есть еще вариант Kivy. Кросс-платформенный фреймворк на Python.
Простейший "Hello World" пишется всего в 6 строчек кода.

Не прокатит. Нужно еще объявление класса и статического метода main - 5 строчек получается.

0

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello, World");
}

}

P.s. консоли/терминалу хватит и этого. Мы же говорим о простейшем хелло ворлде

0

Говно, которое можно заюзать лишь для пары демок, простите

0

Вставлю свои пять копеек.
Как только какой-то опыт программирования всё-таки появится, неплохо было бы почитать исходники каких-то проектов — можно в качестве примера привести то же официальное приложение Telegram, но повторюсь: приходить к пониманию того, почему там используются различные крутые вещи типа стека View вместо нескольких Activity, почему многое вынесено в сишный код и т.п. надо поэтапно.
Каким-то вещам, которых нет в Андроиде, можно поучиться у iOS. Самый простой пример: приостановить какие-то ресурсоёмкие задачи в фоне, если сейчас прокручивается список. Кстати, гугл в некоторых своих примерах тоже эту штуку использует.
А ещё не надо стесняться переиспользовать какие-то вещи из своей практики, наращивайте и улучшайте качество своей кодовой базы.

Вы реально думаете,что код из телеграмма нужно считать эталонным?
Никогда не нужно начинать с подобных проектов.
Пусть человек научится писать красивый,понятный код,а не сурой заоптимизированный ад. Я когда листал их сорцы я переодически пробивал себе лицо фейспалмами(мне понятно почему так написано,но в некоторых местах без бутылки не разберешься,в некоторых местах про нейминг переменных просто забыли). Человеку с несколькими месяцами опыта под андроид лучше смотреть на примеры Jake Wharton'а.

А зачем останавливать задачи, если прокручивается список?

Айос, как известно, однозадачная система ;)

0

Потоков там не существует штоле? Что это за задачи такие, что их надо останавливать, чтобы ui работало??

Очень плохой ответ, мне он не нравится. Нужное мне приложение для iOS я написал за один вечер и одно утро, не имея опыта вообще. Только Google, только копипаста кусков кода с детсадовскими правками. Неужели для Android такое не проканает?

Вопрос звучит "как научиться писать приложения для андроид", а не "как научиться программировать копипастом".

0

Говноприложение, с кучей ошибок, без оптимизиции, знаний сетевых протоколов, да проканает.

Ни одной ошибки xcode не выдал, app задачу выполняет (сбор, анализ и передача данных с сенсоров). Оптимизация параметров – была по мере field-тестов. Использование сетевых протоколов – есть GET и POST, че там сложного? Ну есть всякие говно-нюансы (которые также решаются гуглом), но это все хрень по сравнению с тем фактом, что оно работает.
Я понимаю, что программистам не очень приятно это слышать, но вы же лишь прослойка между задачей и средой разработки. При чем за эту прослойку приходится платить.
Но дело даже не в деньгах, а во времени. Я получил готовое приложение на следующий день, собрал нужную дату и "продал" ее вечером на встрече партнеру. Правда теперь он хочет аналог на андроиде. Поэтому мне и не нравится ответ в сабже.

Да, действительно программисты - примерно такая же прослойка между бизнес-идеей(решением) и реализацией, как и аналитики, если вы понимаете, о чём я.
Даешь всё в одном. Есть у меня такая книжка в архиве - от 2004 года, называется "WEB-программирование", так вот тогда было модно и можно делать всё одному человеку: от дизайна и верстки, до backend-разработки. В книжке как раз про каждое было про главе.
Но миллениал прошел, наступил 21 век, теперь раздельное питание и оптимальные решения больше в цене, чем "универсальные солдаты".
Продавать - это хорошо, но это больше к продаванам. С разработкой ПО оно мало связано ;-)

0

Разработка ПО исключительно связана с продажами, прогрер)))) *юмор*

0

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

0

Ок, по вашей логике, дизайнеры - прослойка между наброском и фотошопом, аналитики - между данными и их интерпретацией, уборщики - между мусором и чистотой и т.д. Не спорю, некоторые проекты можно целиком сделать и одному, но будут ли они настолько же качественны, чем если каждой частью проекта будет заниматься профессионал своего дела (ну или хотя бы разбирающийся в теме)? А сколько времени займет разработка в одиночку по сравнению с разработкой командой? А что если требуется создать глобальный проект, рассчитанный на долговременную поддержку и требующий глубоких знаний? На следующий день вы готовое приложение не получите. Цукерберг не писал Фейсбук в одиночку и за один день.
То что вы сделали приложение, накопипастив с гитхаба и стекоферфлоу еще не означает, что вы научились программировать. Без основы в виде знаний и постоянной практики, вы в течении нескольких месяцев забудете все, что делали и вам придется вникать заново, если нужно будет доработать приложение или написать новое.
Суть ответа Григория как раз в том, что нужно прокачивать знания и использовать их для создания качественного продукта, а не стремиться получить сиюминутный посредственный результат. И, как мне кажется, автор был заинтересован именно в получении знаний, когда задавал вопрос.

0

Код в студию.
Хочется оценить насколько то что вы написали можно назвать "приложением".

вангую, что было просто найдено на гитхабе на 90% подходящее приложение. Ну или как вариант, сабж таки имел опыт.

Не все приложение конечно, но чтобы не быть голословным

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
locationManager = [[CLLocationManager alloc] init];

self.motionManager = [[CMMotionManager alloc] init];
self.motionManager.accelerometerUpdateInterval = .01;
self.motionManager.gyroUpdateInterval = .01;


// [self.motionManager startDeviceMotionUpdates];

[self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
[self outputAccelertionData:accelerometerData.acceleration];
if(error){

NSLog(@"%@", error);
}
}];

[self.motionManager startGyroUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:^(CMGyroData *gyroData, NSError *error) {
[self outputRotationData:gyroData.rotationRate];
}];

Приложение – огонь!

0

Но главное все-таки дата. И с ней уже физику работать, а не прогеру.

0

Это скорее скрипт, который выполняет несколько инструкций из iOS SDK, а не приложение.
Чтобы такое написать достаточно быть хорошим учеником в школе ;-)
Кстати, очевидно, и дизайнер вам тут не нужен - на storyboard достаточно просто накидать стандартных кнопок.

0

Это часть приложение, там еще про gps и про хранение исключительно изменений и про передачу. Я как раз и говорю, что ума много не надо, чтобы накопипастить в iOS. Я просто не ожидал этого, когда решил ночью написать сам и нагуглил Xcode.
Человек оркестр тут не подходит – я сначала обратился к знакомому программисту, предложил денег хороших >100k он поленился, не нашел время, испугался, обосрался, не знаю. Но вот теперь я смотрю на программистов просто как на коммодити, а с другой стороны вижу гугл и простецкую среду разработки.

0

Почему-то захотелось оставить это тут :)

0

Следующий вопрос читателя: "Следующий вопрос читателя: "Как научиться писать на С, без опыта программирования?". Григорий, выручай!

0

В догонку к глупым вопросам: а как научиться править комменты, имея опыт программирования?

Когда я освоил с нуля Delphi +SQL, через 20 лет (практически) с нуля Unity+c#. По своему опыту:

1) Обязательно нужен проект. Мозг должен знать, зачем ему что-то учить, а ученик - видеть перед собой достижимую цель. Проект должен быть небольшой, но осмысленный и полезный.
2) Проект разбивается на шаги минимального размера. Каждый шаг ваш код должен уметь делать еще одну маленькую вещь. Например, первый шаг - вывести "Hello, world!", второй - поменять цвет шрифта или расположение текста на экране, но не то и другое одновременно.
3) Чтобы сделать шаг, берете чужой код из туториалов и поиска и мучаете его, пока не поймете, как он работает.
4) Если нужно не только писать код, но и капаться в настройках софта, работать с визуальным редактором - очень помогут видео туториалы.

Вот отличный путь для обучения программированию под Андроид:
www.springboard.com/learning-paths/android/

я знаю один лайвхак, как научиться программированию: сесть и учить.

Вопрос из разряда "Как переплыть реку если не умею плавать".
Как будто школьник поиграв в клёвую игрушечку, под впечатлением думает "А я тоже так хочу!" и сразу под Android!! ...а когда дело доходит до хотя бы консольного калькулятора, сразу проблемы начинаются... программирование это не 2 раза кнопку нажать, нужно уметь думать и понимать что ты делаешь, и зачем, и на несколько шагов вперёд желательно.

"Если очень уж хочется — у Oracle есть очень хорошие уроки по Java".
Перешёл, посмотрел. Сделал вывод, что "С чего начать?". С изучения английского языка.

у меня хоть и был опыт программирования на других языках - мне помогли разобраться видео туториалы. На русском лучше всего startandroid.ru

Кроме startandroid.ru есть еще замечательный ресурс:

developer.alexanderklimov.ru/android/
Помог мне понять начать писать на под android и на java в целом.

А видео уроки хороши у LoftBlog
Например, основы Java и ООП:
www.youtube.com/watch?v=TPJq5U2KoI8&list=PLY4rE9dstrJzKUZHdGgECOjJLaZBcUdCC

Начать с Си? Товарищ, вы серьёзно?
Моя рекомендация, как Android разработчика: я начинал свой путь в мир программирования (а затем Android'а) с очень интересной книги Герберта Шилдта "Java 7 - The Complete Reference". Начни с неё. Доступна на русском языке. У него самая качественная литература по С, С++, Java и C#.
Успехов!

Хочешь быть профиссианальным программистом нужно этим болеть и трать уйму времени на обучение пробу и ошибки, после чего переходить к более сложным вещам, управлению памяти и т.д. Осебе моих знаний в сфере веб: php JavaScript jQuery, Ajax работа с Json вполне хватило чтобы разобраться на первом этапе в Android. Поэтому если парень хочет начать с Андройд то пусть с него и начинает, сначала с копипаста, тысячу проб и ошибок дадут понимание, главное желание и чтоб тебя к этому тянуло.

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

0

> С чего начать?

С изучения Java SE.

0

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

Сейчас обсуждают
Дмитрий Трипалюк
hyper weapon

Собственно, так и не нашел ответ на вопрос из заголовка ))

Почему бизнес-издание Inc назвало Riot Games лучшей компанией 2016 года
0
Salawat Waliullin

(экологии)

«Добро пожаловать в 2030 год»: член датского парламента о счастливой жизни без приватности и личных вещей
0
Salawat Waliullin

Насчет эконологии в Дании не уверен.
Насчет технологии тоже.
Скорее всего в каждом большом здании будет 3д-принтер, и в каждой комнате.
При необходимости он будет печатать все, от еды и коммуникаторов, до машин и нано-машин.
Города будут завалены мусором, но его будут постоянно убирать роботы.

Социальные пузыри, о которых она сейчас говорит, уже стали новым бичом цивилизации - их будут использовать в переворотах, как на Украине против Януковича, для победы на выборах, как в США 2016.
Люди будут заново учиться создавать и поддерживать сильные социальные связи.
Слабые социальные связи перестанут цениться вообще - все будут знакомыми со всеми.

«Добро пожаловать в 2030 год»: член датского парламента о счастливой жизни без приватности и личных вещей
0
Игорь Арнаков

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

Почему в Санкт-Петербурге сложно найти дизайнера интерфейсов
2
Ефим Дутый

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

Почему в Санкт-Петербурге сложно найти дизайнера интерфейсов
0
Показать еще