couple of slides
This commit is contained in:
parent
5c676c0a0e
commit
4628464aef
BIN
build/j-spec.pdf
BIN
build/j-spec.pdf
Binary file not shown.
|
@ -0,0 +1,133 @@
|
|||
\usepackage{listings}
|
||||
|
||||
\definecolor{codekeywords}{rgb}{0.1,0.4,0.4}
|
||||
\definecolor{codecomments}{rgb}{0,0.6,0}
|
||||
\definecolor{codenumbers}{rgb}{0.4,0.4,0.4}
|
||||
\definecolor{codestring}{rgb}{0.85,0.2,0.1}
|
||||
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
|
||||
\definecolor{codefine}{rgb}{0.7,0.5,0.3}
|
||||
\definecolor{dkgreen}{rgb}{0,0.6,0}
|
||||
\definecolor{gray}{rgb}{0.5,0.5,0.5}
|
||||
\definecolor{mauve}{rgb}{0.58,0,0.82}
|
||||
|
||||
\lstdefinestyle{JCodeStyle}{
|
||||
frame=single,
|
||||
language=Java,
|
||||
aboveskip=3mm,
|
||||
belowskip=3mm,
|
||||
showstringspaces=false,
|
||||
columns=flexible,
|
||||
basicstyle=\scriptsize\ttfamily,
|
||||
numbers=left,
|
||||
numberstyle=\tiny\color{gray},
|
||||
keywordstyle=\color{blue},
|
||||
commentstyle=\color{dkgreen},
|
||||
stringstyle=\color{mauve},
|
||||
breaklines=true,
|
||||
breakatwhitespace=true,
|
||||
tabsize=4,
|
||||
escapeinside={<@}{@>}
|
||||
}
|
||||
|
||||
\lstdefinestyle{PyCodeStyle}{
|
||||
frame=single,
|
||||
commentstyle=\color{codecomments},
|
||||
numberstyle=\tiny\color{codenumbers},
|
||||
stringstyle=\color{codestring},
|
||||
basicstyle=\ttfamily\footnotesize,
|
||||
keywordstyle=\color{codekeywords},
|
||||
breakatwhitespace=false,
|
||||
breaklines=true,
|
||||
captionpos=b,
|
||||
keepspaces=true,
|
||||
numbers=left,
|
||||
numbersep=5pt,
|
||||
showspaces=false,
|
||||
showstringspaces=false,
|
||||
showtabs=false,
|
||||
tabsize=4,
|
||||
escapeinside={<@}{@>}
|
||||
}
|
||||
|
||||
% \DeclareCaptionFormat{listing}{
|
||||
% \parbox{\textwidth}{\centering#1 - #3}
|
||||
% }
|
||||
% \captionsetup[lstlisting]{ format=listing, singlelinecheck=false, margin=0pt }
|
||||
|
||||
\lstdefinestyle{CCodeStyle}{
|
||||
frame=single,
|
||||
commentstyle=\color{codecomments},
|
||||
morecomment=[l][\color{codefine}]{\#},
|
||||
numberstyle=\tiny\color{codenumbers},
|
||||
stringstyle=\color{codestring},
|
||||
basicstyle=\ttfamily\footnotesize,
|
||||
keywordstyle=\color{codekeywords},
|
||||
emph={int,char,double,float,unsigned,void,bool},
|
||||
emphstyle={\color{blue}},
|
||||
breakatwhitespace=false,
|
||||
breaklines=true,
|
||||
captionpos=t,
|
||||
keepspaces=true,
|
||||
numbers=left,
|
||||
numbersep=5pt,
|
||||
showspaces=false,
|
||||
showstringspaces=false,
|
||||
showtabs=false,
|
||||
tabsize=4,
|
||||
escapeinside={<@}{@>}
|
||||
}
|
||||
|
||||
\lstdefinestyle{ASMStyle}{
|
||||
frame=single,
|
||||
numberstyle=\tiny\color{codenumbers},
|
||||
commentstyle=\color{codecomments},
|
||||
keywordstyle=\color{codekeywords},
|
||||
morecomment=[l]{;}, % l is for line comment
|
||||
morecomment=[s]{/*}{*/}, % s is for start and end delimiter
|
||||
basicstyle={\ttfamily\footnotesize},
|
||||
morekeywords={
|
||||
bset, macr,
|
||||
add,addi,and,andi,
|
||||
bge,beq,bne,br,
|
||||
cmpeqi,cmpgei,cmplti,cmpnei,
|
||||
ldhu,ldw,ldwio,
|
||||
mov,movi,movhi,muli,
|
||||
nop,nor,
|
||||
ret,
|
||||
slli,srai,srli,stw,stwio},
|
||||
breakatwhitespace=false,
|
||||
breaklines=true,
|
||||
captionpos=t,
|
||||
keepspaces=true,
|
||||
numbers=left,
|
||||
numbersep=5pt,
|
||||
showspaces=false,
|
||||
showtabs=false,
|
||||
tabsize=4,
|
||||
escapeinside={<@}{@>}
|
||||
}
|
||||
|
||||
\lstdefinestyle{VerilogStyle}{
|
||||
frame=single,
|
||||
numberstyle=\tiny\color{codenumbers},
|
||||
commentstyle=\color{codecomments},
|
||||
keywordstyle=\color{codekeywords},
|
||||
morecomment=[l]{//}, % l is for line comment
|
||||
morecomment=[s]{/*}{*/}, % s is for start and end delimiter
|
||||
basicstyle={\ttfamily\footnotesize},
|
||||
morekeywords={
|
||||
logic, always_ff, always_comb
|
||||
},
|
||||
breakatwhitespace=false,
|
||||
breaklines=true,
|
||||
captionpos=b,
|
||||
keepspaces=true,
|
||||
numbers=left,
|
||||
numbersep=5pt,
|
||||
showspaces=false,
|
||||
showtabs=false,
|
||||
tabsize=2,
|
||||
escapeinside={<@}{@>}
|
||||
}
|
||||
|
||||
\lstset{escapeinside={<@}{@>}}
|
59
j-spec.tex
59
j-spec.tex
|
@ -1,4 +1,5 @@
|
|||
\immediate\write18{texcount -sum -1 prog-draft.tex > /tmp/wordcount.tex}
|
||||
\immediate\write18{texcount -sum -1 j-spec.tex > /tmp/wordcount.tex}
|
||||
%\immediate\write18{texcount -sum -1 scenarios/jc-1-c.tex > /tmp/wordcount.tex}
|
||||
\documentclass[12pt, a4paper]{report}
|
||||
\usepackage[english,russian]{babel} % локализация и переносы
|
||||
\usepackage{fancyhdr}
|
||||
|
@ -18,11 +19,24 @@
|
|||
\usetikzlibrary{mindmap,trees}
|
||||
|
||||
\titlelabel{\thetitle. \quad}
|
||||
\setcounter{tocdepth}{1}
|
||||
|
||||
\babelfont{rm}{PT Astra Serif}
|
||||
\babelfont{sf}{PT Astra Serif}
|
||||
\babelfont{tt}{PT Mono}
|
||||
\graphicspath{{./pics/}}
|
||||
|
||||
|
||||
\newcounter{slidenum}
|
||||
\setcounter{slidenum}{1} % set to 2 if want to exclude title page of presentation
|
||||
|
||||
\newcommand{\showslide}[1]{
|
||||
\noindent\makebox[\linewidth]{\rule{.90\paperwidth}{1.4pt}}
|
||||
\begin{center}
|
||||
\framebox{\includegraphics[page=\arabic{slidenum},width=.95\textwidth]{#1}}
|
||||
\stepcounter{slidenum}
|
||||
\end{center}
|
||||
}
|
||||
\newcommand{\wordcount}{\input{/tmp/wordcount.tex}}
|
||||
\newcommand{\code}[1]{\small{\texttt{\detokenize{#1}}}\normalsize}
|
||||
\renewcommand\labelitemi{\textemdash}
|
||||
|
@ -60,34 +74,59 @@
|
|||
\begin{document}
|
||||
\maketitle
|
||||
\tableofcontents
|
||||
\pagestyle{plain}
|
||||
|
||||
\chapter{Java Core}
|
||||
|
||||
\section{Платформа: история и окружение}
|
||||
Краткая история (причины возникновения); JDK, JRE, JVM, выбор версии; CLI: сборка, множественные источники, пакеты, запуск; структура проекта: пакеты, классы, метод main, комментарии, документирование;
|
||||
\subsection{Задания к семинару}
|
||||
\subsection*{Конспект лекции}
|
||||
\subsubsection{Краткая история (причины возникновения)}
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=17cm]{jc-01-tiobe.png}
|
||||
\caption{График популярности языков программирования TIOBE}
|
||||
\label{pic:java-in-tiobe}
|
||||
\end{figure}
|
||||
|
||||
\subsubsection{Базовый инструментарий, который понадобится (выбор IDE)}
|
||||
\begin{itemize}
|
||||
\item [C-1] Скомпилировать проект из трёх классов, находящихся в двух пакетах, а также создать для этого проекта стандартную веб-страницу с документацией
|
||||
\item NetBeans - хороший, добротный инструмент с лёгким ностальгическим оттенком;
|
||||
\item Eclipse - для поклонников Eclipse Foundation и швейцарских ножей с полусотней лезвий;
|
||||
\item IntelliJ IDEA - стандарт де-факто, используется на курсе и в большинстве современных компаний;
|
||||
\item Android Studio - если заниматься мобильной разработкой.
|
||||
\end{itemize}
|
||||
\subsubsection{Что нужно скачать, откуда (как выбрать вендора)}
|
||||
\subsubsection{Из чего всё состоит (JDK, JRE, JVM, выбор версии)}
|
||||
\subsubsection{Структура проекта (пакеты, классы, метод main, комментарии)}
|
||||
\subsubsection{Отложим мышки в сторону (CLI: сборка, пакеты, запуск)}
|
||||
\subsubsection{Документирование (Javadoc)}
|
||||
|
||||
\subsection*{Задания к семинару}
|
||||
\begin{itemize}
|
||||
\item Скомпилировать проект из трёх классов, находящихся в двух пакетах, а также создать для этого проекта стандартную веб-страницу с документацией
|
||||
\end{itemize}
|
||||
\subsection*{Сценарий лекции}
|
||||
%\subfile{scenarios/jc-1-c}
|
||||
|
||||
|
||||
\section{Управление проектом: сборщики проектов}
|
||||
Управление проектом: Jar-файлы; Gradle/Maven: зависимости, выгрузка артефакта, публичные репозитории, свойства проекта, приватные репозитории (хостинг); Bazel
|
||||
\subsection{Задания к семинару}
|
||||
\subsection*{Задания к семинару}
|
||||
\begin{itemize}
|
||||
\item [C-2] Создать загружаемый артефакт с функцией суммирования двух чисел и загрузить его в локальный кэш артефактов;
|
||||
\item Создать загружаемый артефакт с функцией суммирования двух чисел и загрузить его в локальный кэш артефактов;
|
||||
\end{itemize}
|
||||
|
||||
\section{Специализация: данные и функции}
|
||||
Базовые функции языка: математические операторы, условия, циклы, бинарные операторы; Данные: типы, преобразование типов, константы и переменные (примитивные, ссылочные), бинарное представление, массивы (ссылочная природа массивов, индексация, манипуляция данными); Функции: параметры, возвращаемые значения, перегрузка функций;
|
||||
\subsection{Задания к семинару}
|
||||
\subsection*{Задания к семинару}
|
||||
\begin{itemize}
|
||||
\item [C-3] Написать как можно больше вариантов функции инвертирования массива единиц и нулей за 15 минут (без ветвлений любого рода);
|
||||
\item [C-3] Сравнить без условий две даты, представленные в виде трёх чисел гггг-мм-дд;
|
||||
\item Написать как можно больше вариантов функции инвертирования массива единиц и нулей за 15 минут (без ветвлений любого рода);
|
||||
\item Сравнить без условий две даты, представленные в виде трёх чисел гггг-мм-дд;
|
||||
\end{itemize}
|
||||
|
||||
\section{Специализация: ООП}
|
||||
Инкапсуляция: Классы и объекты (внутренние классы, вложенные классы, static, private/public, final, интерфейс взаимодействия с объектом), перечисления (создание, конструкторы перечислений, объекты перечислений, дополнительные свойства); Наследование: extends, Object (глобальное наследование), protected, преобразование типов, final; Полиморфизм: override, abstract, final;
|
||||
\subfile{scenarios/jc-4}
|
||||
%\subfile{scenarios/jc-4}
|
||||
|
||||
\section{Специализация: Тонкости работы}
|
||||
Файловая система и представление данных; Пакеты \code{java.io}, \code{java.nio}, \code{String}, \code{StringBuilder}, string pool, ?JSON/XML?
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 404 KiB |
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,95 @@
|
|||
\documentclass[russian]{beamer}
|
||||
|
||||
\usepackage{multicol}
|
||||
\usepackage{babel}
|
||||
\usepackage{fontspec}
|
||||
\input{../fancy-listings-preamble}
|
||||
|
||||
\makeatletter
|
||||
\def\beamer@framenotesbegin{% at beginning of slide
|
||||
\usebeamercolor[fg]{normal text}
|
||||
\gdef\beamer@noteitems{}%
|
||||
\gdef\beamer@notes{}%
|
||||
}
|
||||
\makeatother
|
||||
|
||||
% \setbeamertemplate{note page}{\pagecolor{yellow!5}\insertnote}
|
||||
% \setbeameroption{show notes on second screen=right}
|
||||
|
||||
\usetheme{Madrid}
|
||||
\usecolortheme{seahorse}
|
||||
\setmainfont{IBM Plex Sans}
|
||||
\setsansfont{IBM Plex Sans}
|
||||
|
||||
\title{Платформа: история и окружение}
|
||||
\author{Иван Игоревич Овчинников}
|
||||
\institute[GB: Java]{GeekBrains. Java Core.}
|
||||
\date{2022}
|
||||
|
||||
\begin{document}
|
||||
\setbeamertemplate{enumerate items}[circle]
|
||||
|
||||
\frame{\titlepage}
|
||||
\note{...}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Введение и знакомство (о себе)}
|
||||
Иван Овчинников. НПО ИТ, РКС, GB.
|
||||
\begin{block}{Используемые технологии}
|
||||
Много и с удовольствием C, C++, Java, Verilog. C\# и Python даже не считаем.
|
||||
\end{block}
|
||||
Для GB более 20 потоков по разным направлениям, более двух тысяч студентов.
|
||||
\end{frame}
|
||||
\note{...}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Краткая история}
|
||||
\includegraphics[width=12cm]{../pics/jc-01-tiobe.png}
|
||||
\end{frame}
|
||||
\note{...}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Базовый инструментарий}
|
||||
\begin{enumerate}
|
||||
\item Eclipse
|
||||
\item NetBeans
|
||||
\item IntelliJ IDEA
|
||||
\item BlueJ
|
||||
\item Oracle JDeveloper
|
||||
\item MyEclipse
|
||||
\item Greenfoot
|
||||
\item jGRASP
|
||||
\item JCreator
|
||||
\item DrJava
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
\note{...}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Что нужно скачать}
|
||||
\begin{enumerate}
|
||||
\item ждк
|
||||
\item среду
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
\note{...}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Что нужно скачать}
|
||||
\begin{enumerate}
|
||||
\item оракл ждк
|
||||
\item опен ждк
|
||||
\item либерика ждк
|
||||
\item гост жаба
|
||||
\item экзотические истории поискать надо
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
\note{...}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{title}
|
||||
\end{frame}
|
||||
\note{...}
|
||||
|
||||
\end{document}
|
|
@ -0,0 +1,44 @@
|
|||
\documentclass[../j-spec.tex]{subfiles}
|
||||
|
||||
\begin{document}
|
||||
\showslide{build/jc-1-b.pdf}
|
||||
Добро пожаловать на специализацию Java, лучшую из всех специализаций Java, что вы сможете найти.
|
||||
|
||||
% ------------------------------------------------------------------------------------------------
|
||||
\showslide{build/jc-1-b.pdf}
|
||||
Здравствуйте, меня зовут Иван, я разработчик программного обеспечения в Российских космических системах, начальник группы программистов, автор и преподаватель нескольких курсов в направлении программирования на портале GeekBrains. Пара слов обо мне, почему я нахожусь здесь и планирую Вам что-то рассказывать про язык Java? Для этого придётся вынести за скобки мой опыт работы в цифровой схемотехнике и других языках, в том числе создание бортовой аппаратуры, которая прямо сейчас летает у нас над головами или продолжает доставлять другие полезные грузы в космос. С точки зрения языка Java, обо мне можно сказать, что я являюсь разработчиком нескольких отраслевых информационных систем поддержки единой наземной инфраструктуры российского космического агентства. На моём счету также участие в межотраслевых проектах по созданию единых баз данных космического применения.
|
||||
|
||||
%------------------------------------------------------------------------------------------------
|
||||
\showslide{build/jc-1-b.pdf}
|
||||
Итак язык Java. Согласно википедии, Java — строго типизированный объектно-ориентированный язык программирования общего назначения, разработанный компанией Sun Microsystems. Разработка ведётся сообществом; язык и основные реализующие его технологии распространяются по лицензии GPL.
|
||||
|
||||
Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре, для которой существует реализация виртуальной Java-машины. Дата официального выпуска — 23 мая 1995 года. Традиционно занимает высокие места в рейтингах популярности языков программирования (3-е место в рейтинге TIOBE (на август 2021)). На графике отлично видно, что с 2002 года язык уверенно держится в тройке популярных, значительную часть времени возглавляя его.
|
||||
|
||||
Но это всё - сухие факты, ничего не говорящие нам о том, чем руководствовались разработчики языка и что нам, программистам, с этим делать.
|
||||
|
||||
Существует, интересная версия происхождения названия языка, связанная с аллюзией на кофе машину как пример бытового устройства, для программирования которого изначально язык создавался. Кстати, в результате работы проекта мир увидел принципиально новое устройство, карманный персональный компьютер, который опередил своё время более чем на 10 лет, но из-за большой стоимости не смог произвести переворот в мире технологии и был забыт. Устройство Star7 не пользовалось популярностью, в отличие от языка программирования Java и его окружения. С середины 1990-х годов язык стал широко использоваться для написания клиентских приложений и серверного программного обеспечения. Тогда же некоторое распространение получила технология Java-апплетов — графических Java-приложений, встраиваемых в веб-страницы; с развитием возможностей динамических веб-страниц технология стала применяться редко и язык стал применяться для бэк-энда.
|
||||
|
||||
Итак Язык программирования Java занял свою нишу в системном и прикладном программировании из-за своей высокой скорости работы, и веб-программировании, из-за удобного сетевого окружения, ставшего основой для создания бэк-энда веб-сервисов. Java очевидно испытал влияние языков C, C++, Pascal и других, так что многое в этих языках достаточно досконально изучить один раз, чтобы иметь возможность понимать все связанные.
|
||||
|
||||
% ------------------------------------------------------------------------------------------------
|
||||
\showslide{build/jc-1-b.pdf}
|
||||
Мы привыкли к тому, что для программирования нужна некоторая среда, которая будет удобно подсказывать нам, что делать, как писать программу, запускать написанный код и помогать нам отлаживать его. Чаще всего это так, но я призываю вас не останавливаться на единственном инструменте, ведь если быть всегда сосредоточенным на отвёртке, вы никогда не узнаете, что люди придумали очень удобный шуруповёрт.
|
||||
|
||||
Я не планирую рекламировать ту или иную среду, скорее всего не буду даже много говорить о плюсах и минусах той или иной среды, просто покажу список и коротко расскажу о главных действующих лицах:
|
||||
\begin{enumerate}
|
||||
\item NetBeans - если коротко, то эта среда с нами из уважения к истории, она была первой, созданной для разработки на языке Java. Долгое время разработка этой среды не велась, но в последние несколько лет разработчики как будто бы вспомнили о ней и активно взялись за дело, сейчас есть версии под все популярные ОС, поддерживается весь популярный современный функционал, есть прикольные самобытные моменты, вроде расширенных клавиатурных макросов для написания функций с передаваемыми в них массивами;
|
||||
\item Eclipse - проще, наверное, назвать язык или технологию, под которую нет плагина для этой весьма расширяемой и дополняемой среды программирования. Долгое время, вплоть до недавнего, а где-то и до сих пор, является корпоративным стандартом для написания Enterprise приложений и прочих сложных корпоративных приложений. Весьма гибкая среда и-за того, что разрабатывается Eclipse Foundation к ней можно подключить плагины, решающие почти любые задачи разработки. Из того что я видел своими глазами, Siemens использует Eclipse для разработки своих систем поддержки жизненного цикла изделий;
|
||||
\item IntelliJ IDEA - стандарт де-факто примерно десять последних лет. Не уверен, можно ли назвать эту среду российской разработкой, но у компании, разрабатывающей эту среду, три русских учредителя. Да и сама эта компания началась именно с этой среды. В этой среде можно настроить почти любую деталь, что часто бывает очень удобно. Среда расширяется плагинами на почти все случаи жизни разработчика. Часто входит в экосистему JetBrains, развёрнутую на предприятии, поэтому тесно интегрируется в другие сферы деятельности компании. Существует как бесплатная, так и платная версия с расширенным функционалом, например, доступа к базам данных.
|
||||
\end{enumerate}
|
||||
|
||||
Отдельно стоит обговорить такую среду, как Android Studio, как мог заметить внимательный зритель, её нет в списке на слайде, но не потому, что в ней нельзя разрабатывать Java-приложения, а потому что если не разрабатывать в ней именно Android приложения, следует отказаться от её использования из-за некоторой избыточности. Среда снабжена значительным количеством надстроек и эмуляторов мобильных устройств, которые попросту будут вам мешать, если вы не используете их в своей профессиональной деятельности. С другой стороны, если ваша цель - это именно мобильная разработка под Android, то и выбора у вас особо нет, только Android Studio.
|
||||
|
||||
% ------------------------------------------------------------------------------------------------
|
||||
\showslide{build/jc-1-b.pdf}
|
||||
О средах программирования дополнительно поговорили, нужно выбрать какую-нибудь, и скачать. В курсе, кроме этого урока будет использоваться комьюнити версия среды Intellij IDEA, можете для простоты выбрать её. Наверняка, для прохождения предыдущих курсов вы уже скачали и установили JDK, и вот сейчас пришла пора разобраться, что это, какие они бывают, откуда их брать и как их выбирать, мы же за осознанность как-никак.
|
||||
|
||||
% ------------------------------------------------------------------------------------------------
|
||||
\showslide{build/jc-1-b.pdf}
|
||||
|
||||
|
||||
\end{document}
|
Loading…
Reference in New Issue