Курсы по Java для новичков
677 subscribers
67 photos
1 video
4 files
74 links
Я Оксана Еськова - преподаватель Вуза с 20-летним стажем.
Научу писать код на Java c нуля.
Курсы c автоматической проверкой задач: https://stepik.org/users/23008752
Все вопросы сюда 👉 @aksana_yaskova
Download Telegram
Дорогие подписчики! Раз Вы здесь – значит, Вы уже знакомы с моими курсами на Степике. Вы – моя аудитория, для которой я стараюсь как могу.
Поэтому я решила сделать промокод SECRET10 на скидку 10% для подписчиков этого телеграмм-канала на все мои платные курсы:
Основы программирования на С/C++
Основы программирования на С/С++. Часть 2
Основы программирования на С/C++. Полная версия
Объектно-ориентированное программирование на Java
Убедительно прошу покупать курсы после перехода именно по этим ссылкам! Это связанно с комиссией Степика…
Ваша Оксана Еськова
🔥7
А Вы знаете, что такое сериализация и зачем она нужна? Если нет - посмотрите мое видео об этом. Конечно, материал выхвачен из контекста моего нового курса по Java (над которым работаю сейчас). Но представление получить можно... https://www.youtube.com/watch?v=AfDhCyy2Hsk
7
По следам 8 марта…
Вспоминая прошедший праздник борьбы за гендерное равноправие, хочется поговорить о роли женщин в сфере IT.
Традиционно много женщин – аналитиков и тестировщиков, не говоря об HR и прочих администраторах. Однако в разработке ПО их присутствие составляет всего лишь 17% в России и 11% в Беларуси, согласно данным IDC и БЕЛТА. В мировом масштабе эти цифры немного выше, около 30%. Почему такой разрыв? Всё дело скорее не в ментальных различиях, а в социальных стереотипах.
5
И вот история подтверждает это утверждение! На заре программирования это была преимущественно женская область!
Кто не знает Аду Лавлейс, дочь Байрона, которую считают первым программистом в мире? Еще до появления компьютеров она разработала алгоритм для "аналитической машины" Чарльза Бэббиджа. К сожалению, сама машина так и не была построена.
Во время Второй мировой войны был создан ENIAC - первый программируемый компьютер, на котором рассчитывались траектории ракет. И знаете, кто там работал? Шестеро женщин: Джин Бартик, Бетти Холбертон, Кей Антонелли, Мэрлин Мельцер, Френсис Спенс и Рут Тейтельбаум. На фотографиях к этому посту как раз изображены Мэрлин Мейцер и Рут Тейтельбаум, которые настраивают ENIAC.
А вот и ещё несколько великих женщин, заслуживших признание в мире разработки программного обеспечения:
Грейс Хоппер одной из первых создавала программы для компьютера ASCC (Mark I). Именно она создала первый компилятор для языка программирования и популяризировала идею машинно-независимых языков программирования
Кэтлин Бут вместе с мужем Эндрю, создала три компьютера: ARC, SEC и APE. Эндрю их проектировал, а Кэтлин писала на языке ассемблера "Автокод" и программировала машины. Кэтлин также стала автором первых учебников по программированию и профессором в университете.
Лоис Хайбт была одной из разработчиков FORTRAN, первого успешного языка программирования высокого уровня. Она также создала синтаксический анализатор арифметических выражений.
Барбара Лисков разработала принцип подстановки Лисков (LSP) и руководила разработкой языков программирования Клу и Argus.
Маргарет Гамильтон работала в НАСА над несколькими крупными космическими программами, включая программу "Аполлон", которая привела к высадке человека на Луну.
Мэри Келлер вместе с Джоном Кемени и Томасом Курцем создавала ядро DTS BASIC. В 1960-е она была преподавателем и популяризатором новой в то время науки — информатики, а ещё стала первым в истории доктором информатики в США. И при этом еще она была католической монахиней.
Радия Перлман разработала протокол STP, который решает проблему петель в топологии сети Ethernet, а также протокол маршрутизации IS-IS.
Это лишь малая часть истории женщин в программировании. А я хочу пожелать всем девушкам: не бойтесь вызовов, ломайте стереотипы и идите к своей мечте!
5🔥2👍1🐳1
Знатокам С/C++! Вопрос про нультерминированные строки классического С!
🔥2👍1
На вчерашний вопрос все ответили верно! Действительно, первый вариант кода будет работать быстрее. И причины этому в функции strlen(), которая вызывается всякий раз, когда мы проверяем, не пора ли закончить цикл.
Как работает strlen()? В нее передается указатель на начало строки. Отталкиваясь от этого начала, функция продвигается по строке до конца, т.е. до символа ‘\0’. И попутно считает количество символов.
Получается, что на каждой итерации цикла строка str пробегается от начала до конца. Если, например, в строке 20 символов, то это выполняется 20 раз! А в первом варианте с циклом while мы проходим по строке только один раз!
Как можно ускорить второй код? Один раз вычислить strlen() и записать во вспомогательную переменную, которую затем использовать для проверки окончания цикла!
2
А теперь вопрос для знатоков Java:

short x = 3;
short y = 4;
short z = x + y;
System.out.println(z);
Что будет выведено на консоль?
Anonymous Poll
50%
7
50%
Возникнет ошибка компиляции
2
Рада, что большинство ответили верно на этот простой тест! (А те, кто ответил неправильно, очевидно изучали С++ :)
Действительно, перед выполнением любой операции короткие типы (short и byte) приводятся к типу int. Поэтому результат сложения x + y имеет тип int.
В Java запрещены неявные сужающие преобразования. Поэтому мы не можем значение типа int присвоить переменной result типа short – возникает ошибка компиляции!
Можно было бы написать так: short result = (short)( x + y); т.е. использовать явное приведение типа.
Сергей и Дмитрий молодцы!
Кстати, в языке С++ компилятор ничего бы не заметил! И на консоли благополучно бы появилась 7! Там тоже при выполнении сложения тип повышается до int, но потом при присваивании сужается до short снова!
Т.е. Java более строго типизированный язык программирования!
Как мама двоих программистов, подтверждаю!
😁62
Учиться программированию лучше у профессионала?
Практика показывает, что очень часто профессиональному программисту трудно научить новичка. Почему же у нас “не складывается” с профи?

👨‍🚀 Ему кажется, что “это же очевидно”! С высоты своего опыта трудно вернуться назад и объяснять простые вещи, не пользуясь всеми своими знаниями.

🤬 Порой трудно не раздражаться, отвечая в сотый раз на один и тот же вопрос.

👶 Ему не хочется возвращаться в ощущения новичка (они не самые приятные)! Растерянность перед новыми понятиями, невозможность запомнить элементарные вещи. Вроде вчера ты это делал, а сегодня опять все изгладилось из памяти… Б-рр!

Поэтому на начальном этапе важнее найти хорошего педагога, чем классного программиста! Человека, который может спуститься на твой стартовый уровень, увидеть те грабли, на которые ты вот-вот наступишь, объяснить на понятном языке и терпеливо отвечать на “глупые” вопросы…
И этот педагог – я! 😊
Если Вы полный новичок в программировании, то советую начать с курса “Основы программирования на C/C++”. Это самый подробный курс для начинающих. А для скидки в 10% держите промокод: SECRET10
Ну, а если четко знаете, что Java is my love, то добро пожаловать на курс “Основы языка Java”. Он не такой подробный, но зато бесплатный 🤑
7
Видео или текст – что лучше воспринимается?
“Видео уроки – это потеря времени!” VS “Людей, способных читать текст, сегодня меньшинство” – такие противоположные мнения я иногда слышу или читаю в Итернете.
Не знаю, как Вы, а я склоняюсь к первой версии. Но не все так однозначно…
Какие плюсы текстового урока:
• Легко вернуться к предыдущему материалу и повторить.
• Можно просмотреть в быстром темпе.
• Легко найти место, где остановился или отвлекся.
• Можно рассмотреть все детали программы, которые в видео уроке не успеваешь уловить.
• Легко делать копи-паст 😊 (Хотя лучше не нужно!)
Но и видео тоже не бесполезно:
• Проще показать, как что-то настроить, подключить, запустить.
• Можно увидеть не только окончательный вариант кода, но и путь, которым мы приходим к такому результату.
• Легче показать отладку или использование фишек IDE.
• Презентация в видео – это возможность задействовать “клиповое мышление”, когда один слайд = одна мысль.
Т.е. глобально оба эти способа представления знаний нужны. Хорошо сочетать их между собой, что я и делаю в своих курсах.
При этом нужно учитывать, что видео должно быть коротким. Это не лекция в ВУЗе, на которую выделяется два часа. Невозможно сохранять активное восприятие столько времени, не закрепляя теорию практикой! Оптимальная длительность видео – 10 минут.
А Вам какой способ восприятия информации ближе?
🔥2
Обнаружила ужасную вещь!
Оказывается, в моем курсе по Java нет урока, где объяснялась бы отладка программ в Intellij Idea! А я-то думала: почему многие ученики не умеют находить ошибки в своих алгоритмах?
Исправляюсь: добавила урок в курс “Основы языка Java”. Плюс выложила видео на Ютубе. Это как раз тот случай, когда видео будет полезнее текста!
Обязательно освойте навык поиска ошибок с использованием отладчика! https://www.youtube.com/watch?v=Q8cK7duLK9g
❤‍🔥2🥰2
ООП – это зло?

Попробуйте загуглить эту фразу. Сколько Вы получите ссылок, на всякие лады осуждающих и проклинающих объектно-ориентированное программирование? А сколько раз Вам самим хотелось бросить это мутное дело – изучать ООП, и вернуться к родному и привычному процедурному программированию?

Даже мой коллега, прекрасный (реально!) преподаватель программирования с многолетним стажем, называл C++ “птичий язык” и утверждал, что ООП сводится к обработке событий нажатий на кнопки в оконном приложении, а все остальное – искусственная мура!

Но на самом деле проблема не в том, что ООП – это плохо, а в том, что иногда оно применяется неправильно или не к месту.
Сколько ходит в сети мемов про то, как танк наследуется от пулемета! Сколько раз я объясняю студентам, что наследование возможно только тогда, когда наследник “is a”, т.е. является частным случаем предка! Но все равно находятся люди, которые наследуют покупку от товара или командировку от человека!

Представьте себе, что
• использование ООП стало для Вас органичным и простым,
• Вы научились создавать классы за пять минут, используя встроенные возможности Intellij Idea или другой IDE,
• слово “полиморфизм” не вызывает у вас ассоциацию со словом “пофигизм”,
• исключения из разряда “караул, ошибка!” стали инструментом реализации алгоритма,
• вы узнаете паттерны проектирования “в лицо”.

В общем, представьте себе, что Вы постигли философию Java (привет, Брюс Эккель)! Тогда все последующее изучение этого языка станет для Вас логичным, подобным нанизыванию еще одной бусины (стандартного класса) на ниточку объектно-ориентированной структуры.

Вот почему нужно сначала разобраться в ООП, в том, как эта философия проявляется в конкретном языке программирования, а потом уже изучать все явные и тайные возможности этого языка.

Именно в этом состоит цель моего курса “Объектно-ориентированное программирование на Java”. Структурированная теория + нетривиальные задачи помогут обойти сложности восприятия принципов ООП и сделают дальнейшее изучение Java понятным и легким.

А Вы считаете ООП сложным или вредным для программиста?
8
Весна - самое время начать что-то новое!
👍7
Инкапсуляция - зачем она нужна?
Решила начать серию вопросов и кратких ответов на собеседовании по Java. Буду стараться писать коротко и ссылаться на курс по ООП, где все уже подробно и с примерами…
И начнем с простого вопроса – что такое инкапсуляция и зачем она нужна?
Инкапсуляция – это принцип ООП, который означает сокрытие деталей реализации. Т.е. внутреннее устройство класса покрыто некой “оболочкой”, которая скрывает его от программиста, использующего этот класс.
Технически это чаще всего означает, что мы переменным класса даем модификатор private, а общение со внешним миром реализуем с помощью специальных методов (геттеров и сеттеров). Но вот зачем мы так делаем?
Для этого существует несколько причин:
💪 Во-первых, программист оперирует объектами, не задумываясь о том, как они “устроены”. А это снижает сложность его работы.
💪 Во-вторых, повышается безопасность кода и предотвращаются ошибки. Ведь таким образом мы изолируем код от несанкционированного доступа. В уроке 1.3 есть задача, которая ярко это демонстрирует:
Имеется класс Material, представляющий вещество. В нем два поля: название и плотность вещества. Если мы предоставим доступ к этим полям по-отдельности, то возможна ситуация, когда мы изменим плотность, а название останется от предыдущего вещества… Получаем потенциальную возможность ошибки в коде. Поэтому: делаем поля private, а сеттеры не вводим! Тогда поля отдельно друг от друга изменить будет нельзя, а только создать новый объект-вещество!

💪В-третьих, инкапсуляция – это потенциальная возможность менять “начинку” класса так, чтобы все ранее написанные программы с его использованием “не посыпались”.
Например, мы написали класс, который представляет собой коллекцию (т.е. набор объектов). И внутри него для хранения использовали массив. А со временем решили, что более эффективно использовать не массив, а список с полями связи. И нам ничего не мешает изменить внутреннее представление данных! Все написанные ранее программы с этим классом продолжат работать…
👍4🔥2
Напишите, какие вопросы на собеседовании (или просто вопросы) Вы хотели бы разобрать? И напоминаю, что на Степике полным ходом идет весенняя распродажа курсов! На все мои курсы скидка 15% до 26 апреля!
3