Pierre-Yves Saumont, Functional Programming in Java
Раз уж на днях публиковал ссылку на статью Pierre-Yves Saumont, надо вспомнить и его книгу.
Раз уж на днях публиковал ссылку на статью Pierre-Yves Saumont, надо вспомнить и его книгу.
Pierre_Yves_Saumont_Functional_Programming_in_Java_How_functional.pdf
6.4 MB
Из плюсов:
✅ глубокое и подробное погружение в тему. После прочтения можно смело браться за Haskell, F# – что захотите, база у вас уже будет;
✅ в процессе реально понимаешь, как сделать свой код более читабельным, думая функционально.
Из минусов:
❓решения некоторых задач откровенно странные. Да, автор демонстрирует принципы ФП в ООП-языке, но местами эффективность от этого страдает, а не повышается.
✅ глубокое и подробное погружение в тему. После прочтения можно смело браться за Haskell, F# – что захотите, база у вас уже будет;
✅ в процессе реально понимаешь, как сделать свой код более читабельным, думая функционально.
Из минусов:
❓решения некоторых задач откровенно странные. Да, автор демонстрирует принципы ФП в ООП-языке, но местами эффективность от этого страдает, а не повышается.
В программе приведено следующее описание:
1 class A {
2 int a;
3 int b;
4 }
5 class B extends A{
6 int b;
7 ...
8 }
1 class A {
2 int a;
3 int b;
4 }
5 class B extends A{
6 int b;
7 ...
8 }
Каким кодом необходимо дополнить описание конструктора класса B, наследующего класс A, чтобы при создании объекта класса B переменные класса A принимали значение 1?
Anonymous Quiz
7%
a.A = b.A = 1;
60%
super.a=1; super.b = 1;
16%
A.a = 1; A.b = 1;
4%
sup.a = 1; sup.b = 1;
13%
a.super() = 1; b.super() = 1;
Не каждый программист захочет разбираться в том, как устроена процедура вывода типов выражений. Но я считаю, что попробовать нужно – чтобы лучше понимать поведение компилятора. А еще потому, что от привычки анализировать напрямую зависит наш профессиональный навык.
Как раз недавно нашел статью про вывод типов.
Ожидал, что читать будет сложно, но написано доступно, все по полочкам – четко обозначены нужные нам контексты для поли-выражений, даны ссылки на соответствующие главы спецификации.
Будет полезно ознакомиться, даже если вы не планируете углубляться в детали.
Как раз недавно нашел статью про вывод типов.
Ожидал, что читать будет сложно, но написано доступно, все по полочкам – четко обозначены нужные нам контексты для поли-выражений, даны ссылки на соответствующие главы спецификации.
Будет полезно ознакомиться, даже если вы не планируете углубляться в детали.
ods-java-pat-morin.pdf
1.4 MB
Книга позиционируется как введение в структуры данных, но на деле не так проста.
Читайте, если вы:
✅ уже знакомы с базой по структурам данных (с работами Лафоре, например);
✅ хотите подробнее углубиться в тему или освежить знания;
✅ любите максимально подробные (местами даже душные) разборы примеров.
Вам не подойдет, если:
⛔️ только начинаете изучать вопрос. Для этого можно познакомиться с Лафоре, на канале я делился книгой, пару курсов тоже рекомендовал).
Читайте, если вы:
✅ уже знакомы с базой по структурам данных (с работами Лафоре, например);
✅ хотите подробнее углубиться в тему или освежить знания;
✅ любите максимально подробные (местами даже душные) разборы примеров.
Вам не подойдет, если:
⛔️ только начинаете изучать вопрос. Для этого можно познакомиться с Лафоре, на канале я делился книгой, пару курсов тоже рекомендовал).
Чему равен элемент массива a с индексом [51]?
int a []= new int [100];
for (int i = 0, j = 100; i < 100; i++, j--){
a[i] = i + j;
System.out.print(a[i]);
}
int a []= new int [100];
for (int i = 0, j = 100; i < 100; i++, j--){
a[i] = i + j;
System.out.print(a[i]);
}
Чему равен элемент массива a с индексом [51]?
Anonymous Quiz
16%
50
7%
51
55%
100
15%
программа завершится ошибкой
7%
101
Из интересных событий в индустрии:
Онлайн-конференция IT Nights 3.0
🗓10 декабря, 19:00
Стоимость билета: 990 ₽
Обещают много инфы про:
☑️ изменения в IT;
☑️ софт скилы;
☑️ собесы и построение карьеры;
возможности для обучения.
✅ Что особенно полезного: доклады Тагира Валеева и Паши Финкельштейна, где они будут сравнивать Java и Kotlin.
Посмотреть полную программу конференции и купить билеты можно здесь.
Онлайн-конференция IT Nights 3.0
🗓10 декабря, 19:00
Стоимость билета: 990 ₽
Обещают много инфы про:
☑️ изменения в IT;
☑️ софт скилы;
☑️ собесы и построение карьеры;
возможности для обучения.
✅ Что особенно полезного: доклады Тагира Валеева и Паши Финкельштейна, где они будут сравнивать Java и Kotlin.
Посмотреть полную программу конференции и купить билеты можно здесь.
Важнейшие принципы разработки ПО
Вряд ли есть заповеди, соблюдая которые, любой программист напишет чистый код, но выделить основные принципы можно.
Их суть сводится к одному – не усложнять и не халтурить. Невнимательность к требованиям, попытки реализовать все функции сразу или провести оптимизацию на начальном этапе разработки приведут только к бессмысленной трате времени и сил.
В статье подробно описаны 10 принципов разработки, которые помогут улучшить ваш код. Если придерживаться хотя бы нескольких, эффективность работы точно повысится. Кстати, про мой любимый (и, я считаю, важнейший) принцип KISS я рассказывал здесь.
Вряд ли есть заповеди, соблюдая которые, любой программист напишет чистый код, но выделить основные принципы можно.
Их суть сводится к одному – не усложнять и не халтурить. Невнимательность к требованиям, попытки реализовать все функции сразу или провести оптимизацию на начальном этапе разработки приведут только к бессмысленной трате времени и сил.
В статье подробно описаны 10 принципов разработки, которые помогут улучшить ваш код. Если придерживаться хотя бы нескольких, эффективность работы точно повысится. Кстати, про мой любимый (и, я считаю, важнейший) принцип KISS я рассказывал здесь.
Хабр
10 важнейших принципов разработки программного обеспечения
Принципы разработки программного обеспечения необходимо знать каждому инженеру, который хочет писать чистый код. Следование этим принципам позволяет вам и другим разработчикам понять проект. Кроме...
Какой из перечисленных методов и операций может быть использован для замены символов в строках String или StringBuffer в Java-программах?
Anonymous Quiz
10%
substring()
78%
replace()
6%
getChars()
2%
concat()
3%
charAt()
algorithms-illuminated-part-1.pdf
5.5 MB
Если хочется лучше разбираться в алгоритмах, читайте Рафгардена. Это первая часть четырехтомника, посвящена введению в основы.
Из плюсов:
✅ максимально понятный язык;
✅ баланс между теорией и разбором конкретных примеров;
✅ все необходимое для хорошей базы: MergeSort, QuickSort, асимптотический анализ, “разделяй и властвуй”, алгоритмы сортировки.
Из минусов:
❌ к некоторым задачам нет ответов, а чтобы их узнать, нужно пройти курс автора на Coursera. Хитро, но, справедливости ради, курс и правда годный. Найти его можно по ссылке.
Из плюсов:
✅ максимально понятный язык;
✅ баланс между теорией и разбором конкретных примеров;
✅ все необходимое для хорошей базы: MergeSort, QuickSort, асимптотический анализ, “разделяй и властвуй”, алгоритмы сортировки.
Из минусов:
❌ к некоторым задачам нет ответов, а чтобы их узнать, нужно пройти курс автора на Coursera. Хитро, но, справедливости ради, курс и правда годный. Найти его можно по ссылке.
Декабрь оказался богат на полезные мероприятия.
Online Java Meetup от Haulmont
🗓 9 декабря, 18:00
Небольшой, но информативный митап, где будут обсуждать проблемы доступа к данным.
🔹 «Данные и микросервисы: проблемы и решения»
Developer Advocate Андрей Беляев расскажет о переходе от монолита к микросервисам, микрофреймворках (с подробностями про Micronaut Data, Panache и Helidon DB Client) и реактивном программировании.
🔹 «Удалять, чтобы осталось: решение от Hibernate и его последствия»
Developer Advocate Андрей Оганесян выступит с докладом о мягком удалении и разберет неочевидные факты на конкретных примерах. Заявлено, что доклад будет полезен опытным разработчикам. Учитывая, что большинство моих коллег относятся к soft delete скептически, послушать будет интересно.
Участие бесплатное, нужно только зарегистрироваться на Timepad. За час до начала вам пришлют ссылку на трансляцию.
Online Java Meetup от Haulmont
🗓 9 декабря, 18:00
Небольшой, но информативный митап, где будут обсуждать проблемы доступа к данным.
🔹 «Данные и микросервисы: проблемы и решения»
Developer Advocate Андрей Беляев расскажет о переходе от монолита к микросервисам, микрофреймворках (с подробностями про Micronaut Data, Panache и Helidon DB Client) и реактивном программировании.
🔹 «Удалять, чтобы осталось: решение от Hibernate и его последствия»
Developer Advocate Андрей Оганесян выступит с докладом о мягком удалении и разберет неочевидные факты на конкретных примерах. Заявлено, что доклад будет полезен опытным разработчикам. Учитывая, что большинство моих коллег относятся к soft delete скептически, послушать будет интересно.
Участие бесплатное, нужно только зарегистрироваться на Timepad. За час до начала вам пришлют ссылку на трансляцию.
Что будет выведено на экран следующим кодом?
int a = 15;
System.out.print(a);
{
a ++;
System.out.print(a);
}
System.out.print(a);
int a = 15;
System.out.print(a);
{
a ++;
System.out.print(a);
}
System.out.print(a);
Что будет выведено на экран следующим кодом?
Anonymous Quiz
24%
сообщение об ошибке
16%
151615
49%
151616
11%
151516