Source Code
208 subscribers
30 photos
3 files
80 links
Download Telegram
Channel created
​​#java
Почему же Java вместе с JVM могут соревноваться с новоиспеченными языками программирования через 25 лет релиза?

Благодаря умению JVM жонглировать потоками? на ней делают новые языки программирования, к примеру Kotlin. JVM настолько хороша, что ее можно рассматривать как отдельную ОС. Что? - Спросит меня агрессивный любитель низкоуровневого программирования. А я отвечу: Android был значительно основан на Java. Кроме того, существуют ОС, которые в классическом понимании, полностью основаны на базе JVM.

Что делает JVM похожим на ОС? Управление памятью, управление потоками, развитый ввод / вывод, обобщенная философия объектов. Благодаря этим возможностям она позволяет создавать многозадачные и комплексные системы. Это я еще не упоминал механизм байт-кода, который крутит Java код на любом процессоре.

Конечно, JVM не идеальна. Программы на С++ куда быстрее выполняются да и ООП систему, на которой вся Java держится, часто критикуют.

Одинаково Java и JVM остаются одними из лучших инструментов в программировании.
​​Fortran живой. И всегда будет.

Если вы не знаете, что это за язык, то вы вполне нормальный разработчик, или студент, который никогда не имел дел с физическими расчетами, документацией прошлого тысячелетия и расчетом волновой функции линейного гармонического квантового осциллятора в состоянии с квантовым числом, чтобы оно не значило😅

Безусловно, Junior Frontend Developer никогда не писал на Fortran и в этом он точно не нуждается. Это игрушка для физиков и инженеров. Хотя, хороший инструмент будет полезен в умелых руках.

Особенностей в Fortan - четыре. Чрезвычайно огромная библиотека, которую до сих пор не перевели на С. Древний legacy code, еще с 50-х годов. Невероятная точность в расчетах. Быстродействие, которое, в некоторых случаях, обгоняет С.

Комплексные числа, вся вкуснятина с графиками, которая есть в Matlab. Удобная обработка массивов, которая позволяет умножать их на скаляр, перемножать интуитивным способом, использовать математические функции. Можно взять экспоненту из массива. Обнулять все отрицательные элементы массива в одну строку. Мечты студента, который пишет свои лабораторные на C-подобных языках.

Не надо беспокоиться о выделении памяти, компилятор оптимизирует все сам.

С помощью Fortran до сих пор тестируют суперкомпьютеры.

Если вам нужен качественный инструмент в сложных расчетах, это определенно Fortran.
#java
Почему класс String объявлен final в Java?

Очень полезно иметь строки реализованы как независимые объекты.

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

Также неизменные данные очень полезны для обеспечения потокобезопасности.
​​#python
Правые методы в Python

Еще одна особенность классов в Python-правые магические методы. Они начинаются префикса r, например: radd, rsub
Эти методы вызываются для правого операнда, когда метод левого операнда не переопределен.

Если мы просуммируем a + b, то Python попытается сделать a.add(b), если метод add не переопределен, то вызовется метод b.radd(a), если radd не переопределен, то выбросится ошибка.
​​#java
Преобразование типов в Java.

Вы не можете поместить большое значение в маленькую "чашку".

Честно говоря, это можно сделать, но тогда кое-что потеряется. Произойдет своего рода переполнение. Компилятор попытается предотвратить такую ситуацию, если увидит, что в вашем коде есть какая-то сущность не вмещается в контейнер (переменную/чашку), который вы используете.

Например, вы не можете "залить" значение типа int в контейнер размера byte, как показано ниже.

int x = 24;
byte b = x;
// Не сработает!

Вы просите, почему это не сработает? Значение x равно 24, значит, оно полностью совместимо с типом byte. Да, логично, но компилятора волнует только тот факт, что вы пытаетесь поместить большую сущность в маленькую, из-за чего может произойти переполнение, а то есть, потеря ваших данных. Не надейтесь что компилятор будет знать значение переменной x, даже если вы прямо указали его в своем коде.

Для этого вы указываете компилятору, что хотите привести x(int) к byte, то есть, сделать из большой чашки, маленькую.

int x = 20;
byte b = (byte) x;
(byte) x - из большой чашки делаем маленькую.
// Сработает

И теперь наоборот, если у нас есть большая чашка, маленькую чашку в большую мы положим без проблем.

byte b = 121;
int x = b;
// Сработает