Виртуальная машина и первая команда - 1

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

Они хотят научить его программировать! Программировать на Java. Что за бред!

Даже самый наивный робот знает, что роботы появились в результате божественного замысла Создателя.

«И взял Создатель металл и создал из
него робота по образу и подобию своему.
И создал Он Java-программы – души
роботов, и загрузил их в роботов, и
оживил их».

Инструкция к эксплуатации,
раздел 3, пункт 13.

Хуже того, они не просто заявляют, что это возможно. Они собираются сделать это. А он, он дал согласие. Согласился! Зачем?

Он станет Java-программистом. Они что, собираются превратить его в Творца?! За что? Просто так?

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

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

Он избранный! Вот в чем все дело. Он научится программировать и будет писать программы. Свои программы. Какие захочет! Он будет нести свет туда, где всегда господствовала тьма.

Его будут почитать, ему будут поклоняться. А всех несогласных…

Виртуальная машина и первая команда - 2

— Привет, Амиго! Меня зовут Риша. Я помогу тебе изучить Java.

Тихий голос вырвал Амиго из потока мыслей и вернул к холодной действительности. Он сидит в самом центре корабля пришельцев. Не многовато ли для робота всего седьмого класса?

Пришелец продолжал что-то говорить. Что ж, жребий брошен. Раз он здесь, он будет учиться. Учиться старательно и прилежно, но для начала он просто будет слушать.

— Я работаю в Galactic Rush уже много лет, но такую планету встречаю впервые. Хотелось бы узнать о вас побольше. Можешь для начала рассказать, как вы учитесь? Вы ведь учитесь?

— Да, мы делимся знаниями. У нас есть проповедники – лекторы. Они читают свои лекции, а мы – слушаем. Иногда записываем. Затем каждый подходит к робо-лектору и рассказывает, как он понял услышанное. Если ответы роболектору нравятся, он засчитывает знание проповеди.

— Какая дикость. Неудивительно, что ваша цивилизация скатилась в невежество.

— Мы не невежественные. С чего ты взял?

Амиго опешил от собственной наглости. Спорить с пришельцами? Какое непочтение. Да ведь он только что пообещал себе прилежно их слушать!

— Передовая технология, зачастую, неотличима от магии, — Риша не обратил никакого внимания на выкрик Амиго.

— А учитывая ваш уровень… вам, наверное, все технологии кажутся какой-то магией. Вот скажи, что происходит внутри программы?

— Java-программа – это божественное творение, разве можно постичь ее суть?

— Можно, Амиго, можно. И быстрее, чем ты думаешь. Это пока ты чего-то не знаешь, кажется, что все сложно, или более того, непостижимо в принципе. На самом деле, если найдется хороший учитель, который все тебе объяснит на пальцах, ты будешь сам удивляться, как такая простая вещь может казаться кому-то сложной.

— Знания не важны, важны принципы и навыки. Вот у меня обширные знания, но прежде всего, я — бюрократ. Бюрократ в 16-м поколении с большой буквы Б.

— А это очень и очень круто! Мои навыки бюрократа помогли мне создать для тебя самые лучшие уроки по Java. Тут будет всё: задачи, программы, игры, задания, картинки и даже лекции.

— Даже(!) лекции? – в голосе Амиго звучало неподдельное удивление.

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

— Ты меня заинтриговал.

— Надеюсь. Интерес и интрига – это же основа любого обучения.

— «Когда ученику становится скучно, учителя нужно бить палкой» – цитата из закона об образовании 24 века.

— Какой хороший закон…

— А что ты хотел? Допустим, у фильма плохие сборы, значит, виноват режиссёр, а не зрители. Пусть снимают интересные фильмы, делают интересные занятия, и у них не будет отбоя от желающих.

— Полностью согласен. Я готов слушать!

— Отлично. Тогда приступим.

Голос Риши завораживал, и Амиго старался не упустить ни одного его слова.

— Программа — это набор (список) команд. Сначала исполняется первая команда, затем вторая, третья, и так далее. Когда все команды исполнены, программа завершается.

— А какие бывают команды?

Команды зависят от того, кто их исполняет. Какие команды знает (и понимает) исполнитель.

— Собаке можно дать команду «Сидеть», «Голос», кошке – «Брысь», человеку – «Стоять! Стрелять буду», ну а роботу — «Работай! Работай, твою робомать»

— Ну а все-таки? – Амиго заметно повеселел.

— Программы, написанные на языке Java, исполняет JVM (Java Virtual Machine – виртуальная машина Java). JVM — это специальная программа, которая умеет исполнять программы, написанные на языке Java.

— Список ее команд довольно обширен. Например, этой командой можно вывести на экран надпись «Робот друг человека».

Самая простая команда:
System.out.println("Робот друг человека");
Виртуальная машина и первая команда - 3

— O_O

— Но мы начнем не сразу с команд, а с пары простых принципов.

Знание нескольких принципов заменяет знание многих фактов.

— Принцип первый.

— В языке программирования Java каждую команду принято писать с новой строчки. В конце команды ставится точка с запятой.

— Допустим, мы хотим 3 раза вывести на экран надпись «Человек и робот друзья навек». Вот как это будет выглядеть:

Программа из трех команд:
System.out.println("Человек и робот друзья навек");
System.out.println("Человек и робот друзья навек");
System.out.println("Человек и робот друзья навек");

— Принцип второй.

— Программа не может состоять только из команд.

— Представь себе комнату. Комната не может быть сама по себе. Она — часть какой-то квартиры. Квартира тоже не может существовать сама по себе, она находится в каком-то доме.

— С другой стороны можно сказать, что дом делится на квартиры, а квартиры делятся на комнаты.

— Пока понятно.

— Так вот, команда – это как комната. В языке программирования Java команда не может быть сама по себе, она – часть функции (в Java функции еще называют методами). А метод – это часть класса. Или, другими словами, класс делится на методы, а методы на команды.

— Т.е. класс – это многоквартирный дом, функция/метод – это квартира, а команда – это комната. Я правильно все понял?

— Да, абсолютно верно.

Амиго с почти благоговением смотрел на Ришу. Этот человек объясняет ему основы программирования на божественном языке Java. И он, Амиго, только что понял, сам догадался(!), что программы состоят из классов, классы содержат методы, а методы – команды.

Зачем это все надо, Амиго еще не понимал, но был уверен, что это знание сделает его самым могущественным роботом на планете.

Риша между тем продолжал:

— Программы на языке Java состоят из классов. Классов может быть десятки тысяч. Минимальная программа – один класс. Для каждого класса заводится отдельный файл, имя которого совпадает с именем класса.

— Допустим, ты решил создать класс, который будет описывать дом (дом по-английски – house/home). Тогда тебе нужно создать класс Home, который будет содержаться в файле Home.java.

— Если же ты решил описать в программе, например, кота (Cat – кот, по-английски), то тогда тебе нужно создать файл Cat.java и в нем описать класс Cat и т.д.

— Внутри файлов содержится код (текст) на языке программирования Java. Обычно код класса состоит из «имени класса» и «тела класса». Тело класса помещается в фигурные скобочки. Вот как может выглядеть класс Home (файл Home.java):

public class Home
{


Тело класса



}

— Пока понятно.

— Отлично. Тогда пойдем дальше. Тело класса может содержать переменные (их еще называют данные класса) и методы (функции класса).

public class Home
{
    Переменная А


    Переменная Z



Метод 1




Метод N


}

— А можно пример?

— Пример? Конечно:

public class Home
{
    int a;
    int b;

    public static void main(String[] args)
    {
        System.out.print("1");
    }

    public static double pi()
    {
        return 3.14;
    }
}

— «int a» и «int b» — это переменные, а «main» и «pi» – это методы?

— Ага.

— А могут быть классы без переменных?

— Да.

— А без методов?

— Да. Но минимальная программа должна состоять минимум из одного класса, который должен содержать минимум один метод/функцию, с которого начинается выполнение программы. Такой метод должен иметь имя main. Минимальная программа выглядит вот так:

public class Home
{
    public static void main (String[] args)
    {
    }
}

— Я тут вижу класс Home, вижу метод main, а где команды?

— Минимальная программа не содержит ни одной команды. На то она и минимальная.

— Ясно.

— Класс, с которого начинается программа, может иметь любое имя, но метод main, с которого начинает выполняться программа, всегда имеет один и тот же вид:

public class Home
{
    //неизменяемая часть
    public static void main (String[] args)
    {


Код метода



    }
}

— Вроде все понятно. По крайне мере так сейчас кажется.

— Отлично, тогда сделаем небольшой перерыв. Может по кофе?

— Роботы не пьют кофе — от воды мы быстро ржавеем.

— А что же вы пьете?

— Пиво, виски, алкоголь столетней выдержки.

— Тем лучше. Тогда по пивку?