Лого 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

0

В статье написано (если это та статья): "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

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

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

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

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

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

0

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

0

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

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

0

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

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

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

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

0

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

0

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

0

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

0

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

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

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

0

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

0

public class HelloWorld {

public static void main(String[] args) {

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

}

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

0

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

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

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

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

0

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

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

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

0

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

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

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

0

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

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

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

0

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

0

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

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#.
Успехов!

0

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

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

0

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

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

Прямой эфир
Приложение-плацебо скачали
больше миллиона раз
Подписаться на push-уведомления