Какие нижеперечисленные фрагменты кода допустимы?
Anonymous Quiz
8%
Perimetr sh = new Perimetr; sh.setPerimetr(55.2);
46%
class Triangle extends Perimetr { public void setPerimetr(double p) { this.perimetr = p; } }
8%
class Circle extends Perimetr { double rad; final float PI = 3.14; }
8%
class Triangle extends Perimetr { void setPerimetr(double p) { this.perimetr = s; } }
31%
класс Perimetr описан неверно. программа завершится ошибкой
Появился отличный перевод статьи Pierre-Yves Saumont про абстракции в ФП и ООП. Задача для примера выбрана не слишком близкая к реальности, зато все расписано предельно понятно.
Полезно прочитать, если хотите:
🔹сравнить практики в ООП и ФП
🔹понять, почему доведение абстракции до предела бывает полезно и в ООП
🔹пофилософствовать на тему: «является ли преждевременная абстракция/оптимизация злом?»
Люблю, когда материал заставляет сместить фокус внимания с привычных методов решения задач – это помогает держать себя в форме.
Кому интересно, оригинал можно почитать здесь.
Полезно прочитать, если хотите:
🔹сравнить практики в ООП и ФП
🔹понять, почему доведение абстракции до предела бывает полезно и в ООП
🔹пофилософствовать на тему: «является ли преждевременная абстракция/оптимизация злом?»
Люблю, когда материал заставляет сместить фокус внимания с привычных методов решения задач – это помогает держать себя в форме.
Кому интересно, оригинал можно почитать здесь.
Хабр
Уроки абстракции: чему FP может научить ООП
Абстракция - один из величайших инструментов воображения, когда-либо изобретенных людьми для представления, расшифровки и изображения мира. - Джерри Зальц Я хочу приблизиться к истине настолько...
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. Хитро, но, справедливости ради, курс и правда годный. Найти его можно по ссылке.