452 subscribers
69 photos
25 files
83 links
Пишу иногда интересно, а иногда не очень. Предложения, сотрудничество @Javacoding_bot
加入频道
Пятничный мем с высокой концентрацией жизы.
Давненько не было никаких теоретических вопросов. Вспомним, что мы знаем о классах и методах?
Одна из моих любимых статей о важности системного подхода, пусть и напоминает по стилю расхожие мотивирующие цитаты.

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

Как еще развивать навык мыслить системно? Самый простой способ – отказываться от ежедневных привычных действий: менять маршрут от дома до работы, очередность рутинных задач. А еще расширять кругозор. Так постепенно приучаешься видеть в любой ситуации множество вариантов, среди которых затем находишь решение.
Продолжаю тему литературы о структурах данных
Allen B. Downey, Think Data Structures: Algorithms and Information Retrieval in Java (2017)
Allen_B_Downey_Think_Data_Structures_Algorithms_and_Information.pdf
5.2 MB
Довольно интересная и насыщенная информацией книга: там и анализ алгоритмов, и хэш-таблицы, и двоичное дерево. Она небольшая и ориентирована скорее на опытных разрабов, но из-за этого некоторые темы разобраны не так подробно, как следовало бы (про DFS вот совсем мало). Зато даны реальные примеры, а не псевдокод. Рекомендую.
Актуально каждую пятницу.
Очень спорная статья.

С одной стороны, прекрасно понимаю всеобщую усталость от теоретических вопросов, которые никакого отношения к происходящему на проекте не имеют. С другой, уверены, что хотите взять на работу человека, который не может внятно объяснить, чем LinkedList отличается от ArrayList?

Считаю, что выявлять реальный технический бэкграунд кандидата какими-то другими методами, кроме тех собеседования – ненадежно и некорректно. Разумеется, собеседование не должно состоять только из теорвопросов, все же это собеседование, а не экзамен. Но именно такие вопросы поставят всех кандидатов в равное положение. А вот с теми, кто на них ответил, можно уже и про опыт на прошлых проектах поговорить, и бизнес-задачи им предложить на декомпозицию.
Выше уже писал об этом, но повторюсь: не бывает бесполезных базовых знаний. Те, кто кричит, что алгоритмы им не нужны, обычно не используют на максимум эффективности даже язык, на котором пишут каждый день, не то что какие-то другие доступные инструменты. Без алгоритмического анализа не получится решать по-настоящему сложные интересные задачи и прокачивать свой скил.

Поэтому в свое время я был очень рад, когда обнаружил запись курса по книге Кормена “Алгоритмы: построение и анализ”: информация усваивалась куда легче. Один из лекторов – Чарльз Лейзерстон, соавтор Кормена, так что объяснение буквально из первых рук.

Первую лекцию стоит посмотреть, чтобы понять, зайдет ли вам такой формат. Полный курс со всеми материалами есть на сайте открытых курсов MIT.
Держите задачку.

В программе определены класс Shape и его наследник класс Circle:

1 class Shape {
2 double square;
3 Shape(double r){
4 square = 3.14 * r* r;
5 }
6 }
7 class Circle extends Shape {
8 double r;
9 Circle (double rad) {
10 r = rad;
11 super(rad);
12 }
13 }

Выполнение программы завершилось ошибкой.
GitHub рассказали, что почти треть нового кода на платформе написана с помощью сервиса на базе искусственного интеллекта Copilot.

В комментариях к новости кто-то уже успел похоронить профессию программиста. Забавно, но рановато. Да и сам инструмент пока скорее для фана, чем для реальной пользы – лучше самому написать, чем потом переписывать 40% кода нейросети. Для новичков тоже польза сомнительная, особенно для тех, у кого еще база в голове окончательно не сложилась.

Посмотрим, как все будет развиваться дальше.
Это я иду дебажить
Опубликовали обзор проходившей 25-28 октября конференции для Java-разработчиков Joker 2021.

Есть довольно интересные доклады, вот эти два сохранил себе для ознакомления:

🔺Java-объекты наизнанку
🔺Выходя за рамки контейнера — компактные и быстрые контейнеры с нативным образом (и без)

А открыли конференцию докладом Самопишущийся код, я как раз недавно писал о том, эффективно ли писать код с помощью Copilot и нейросетей вообще.

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

Jeff Heaton, Introduction to Neural Networks with Java
Heaton-Introduction to Neural Networks with Java.pdf
3.5 MB
Подойдет даже совсем новичкам: примеры кода тут простые, их легко разбирать (иногда в процессе даже становится скучно). Но от книги со словом Introduction в названии ничего суперсерьезного ждать и не надо. Кратко изложена теория, много практики – для знакомства с нейросетями вполне годится.
В программе приведено следующее описание класса Perimetr:

abstract class Perimetr {
double perimetr;
abstract public void setPerimetr(double p);
}
Появился отличный перевод статьи Pierre-Yves Saumont про абстракции в ФП и ООП. Задача для примера выбрана не слишком близкая к реальности, зато все расписано предельно понятно.

Полезно прочитать, если хотите:

🔹сравнить практики в ООП и ФП
🔹понять, почему доведение абстракции до предела бывает полезно и в ООП
🔹пофилософствовать на тему: «является ли преждевременная абстракция/оптимизация злом?»

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

Кому интересно, оригинал можно почитать здесь.