All streams
Search
Write a publication
Pull to refresh
297
20.5
Сергей Шпадырев @SergioShpadi

Программист и эссеист

Send message
Если вам задают этот вопрос — бегите. Этот вопрос означает, что за 5 минут до интервью интервьюер загуглил «что спросить на собеседовании javascript». Во всех проектах, где на интервью меня спрашивали про замыкания, царил бардак и ужас.
Вы же, надеюсь, в курсе, что внешний долг США номинирован в долларах? Внешний долг РФ тоже номинирован в долларах. Но есть один нюанс…
Тут вы правы. Но все же JS изобилует такими вот подводными камнями.
Под Java их просто очень много. На любой извращенный вкус. На C# все-таки меньше.
Подобные эксцессы возникают из-за динамической природы JS, и людям, которые годами работают на статически-типизированных языках, это кажется крайне не удобным.
Я согласен. Слово вводит в заблуждение. Убрал.
Kotlin — язык другого предназначения. Чтобы понять, какое место он занимает в иерархии языков JVM, нужно обратиться к истории, как это ни странно, языков под CLR.

Под CLR существуют два главных языка — это C# и F#, которые соответствуют Java и Scala в JVM-мире. F# как и Scala развивается очень быстро, экспериментирует в слиянии различных парадигм и подходов. Все, что достаточно обкаталось на F# через пару лет появляется в C#. Так в новых C# появились кортежи, линк и вся остальная функциональщина.

Проблемой же Java в данном случае является маниакальный принцип совместимости с кодом 20 летней давности. И все новые идеи из Scala она в себя либо интегрирует очень медленно, либо не интегрирует вовсе. С интегрированным тоже есть проблема. Если вы посмотрите историю Java, то увидите, что многие решения интегрируются крайне криво из-за принципа полной совместимости. И каждая выходящая фича получается defective by design. Например, дженерики в Java, которые можно взорвать в три строчки. Объявление ко/контравариантности в месте вызова, а не объявления. Stream API из Java 8 тоже вышло очень сильно кривеньким и не таким удобным как в Scala.

А людям хочется программировать уже на чем-то более удобном, чем Java. Так и появился Kotlin, который, если вы посмотрите поближе, является смесью Scala и C#. И людям он понравился, потому что удобнее и красивее Java. Ну неприятно людям в 2016 году не иметь таких базовых удобств, как type inference например.

Несмотря на все вышенописанное все же хочу отметить, что Scala и F# — не являются просто песочницами для экспериментирования, а являются полноценными языками с собственной философией и парадигмой.

Вот тут ниже вам ошибочно ответили в другую ветку
На поддержание компиляцию в CLR требовалось очень много ресурсов. И когда человеческих ресурсов стало не хватать, проект закрыли. Потому что было непонятно какие преимущества это дает, и необходимость компиляции в CLR была крайне сомнительна по ряду причин
  • На CLR есть F#, который по духу и идеям очень близок к Scala.
  • JVM работает под виндой, непонятно зачем нужен тогда CLR, который ни под чем другим не запускается.
  • При разработке возникало множество проблем из-за различий внутреннего устройства виртуальных машин и различий в стандартной библиотеки.
  • Одним из главных плюсов разработки на Scala является все-таки возможность использовать любую из миллионов Java-библиотек.
Если вам нужно написать, к примеру, консольную утилиту, то вы не можете ждать пока у вас поднимется java
runtime, пока он прогреется. Вам нужен мгновенный запуск и чтобы все было быстро сразу.

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

На сайте есть примеры использования структур и объявления интерфейса к malloc, и получения указателя. То есть по сути вы пишете со Scala синтаксисом на C.
И еще чтобы строем ходили!
А как вы даете номера версиям? Если Idea 15 вышла всего несколько месяцев назад, то почему эта версия уже 16, а не 15.1 например?
Ведь никаких особых мажорных изменений вроде бы нет.
На сайте Kotlin есть сравнение, где сказано, что если вы счастливы со Scala, то Kotlin вам не нужен. Основное различие состоит в том, что Kotlin позиционирует себя как better Java, а у Scala все же своя парадигма и идеология.

В самом Scala dotty тулзы по выпиливанию кода не будет. Будет тулза linker поверх компилятора, разработкой которой занимается хабраюзер darkdimius. И выпиливание ненужного кода — это лишь часть работы, которую linker делает. Он также оптимизирует (ан)боксинг примитивных типов и value-классов. Кроме того ожидается оптимизация создания быстроумирающих объектов в off-heap.
Ну лучше instanceClass. Я говорю больше про Java и ему подобные.

Я не знаю специфики C++, но в том же куске кода из статьи в двух идущих подряд линиях написано и klass и class

instanceKlassHandle super_klass;
if (super_class_index == 0) {
Так часто делают, хоть это и совсем неправильно. Еще часто пишется clazz
Интересно другое. Кто может в трезвом уме заплатить за логотип $29,6 млн? Зачем? Почему бы не заказать 100 логотипов за $1.000 и выбрать из них лучший?
Вот спасибо. После просмотра нормального примера кода на Обероне без однобуквенных имен переменных и процедур, не такими уж и плохими кажутся BEGIN-END вместо скобок
Cливается, так как использует тот же самый набор символов. К примеру:

begin;
int beginningBegin = 25;
int endd = 34;
if (beginningBegin > endd)
then
begin
beginningBegin -= beginningBegin;
endd = endd — beginningBegin;
end;
beginningBegin = 45;
end;
Это лечится код стайлом, запрещающем писать как-то иначе. И со временем это вживается в подкорку мозга, и ты забываешь, что можно их и не ставить.
В крайнем случае, это лечится статическим анализатором, в котором прописана выдача ошибки на написание if без скобок.

Information

Rating
370-th
Location
Дубаи, Дубаи, О.А.Э.
Date of birth
Registered
Activity