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

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

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

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

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

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

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

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

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

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

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

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

Вот потому он и бывший

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

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

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

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

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

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

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

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

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

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

Комментарий удален по просьбе пользователя

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

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

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

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

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

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

Ожидал увидеть самую короткую статью - "Никак." (:

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

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

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

Ну и нужно иметь в виду, что Google планомерно избавляется от использования Java в Android

кто вам сообщил такую жесткую ересь?

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

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

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

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

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

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

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

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

биг дата на андроид аха ахаха ахахахахахахахаха

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

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

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

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

Попробую сделать это с одной строки:

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

public class HelloWorld

📎📎📎📎📎📎📎📎📎📎