• Стоит ли новичку изучать Kotlin. Scala?

    denisftw
    @denisftw
    Вообще, с точки зрения изучения, Kotlin и Scala очень похожи. Здесь нужно отдать должное ребятам из JetBrains, которые не стали изобретать велосипед, а взяли очень удачный синтаксис у Scala и немного разбавили его C#-подобными фичами.

    У Scala есть два преимущества - это гораздо более развитая экосистема (плюс, полноценная стандартная библиотека, как правильно заметил @Sirikid) и наличие "второго дна" в виде Typelevel-тусовки. До последнего доходят далеко не все, но если интересно, то в чисто функциональных Scala-библиотеках вовсю используются type classes и category theory и тут не то что Java 8 не подойдет - такое вообще далеко не на всех ФП-языках получится сделать.

    Котлин быстрее компилируется и за счет этого может легко встраиваться в существующие Java workflow. Scala этого себе позволить не может, так как продуктивная разработка практически всегда подразумевает использование SBT - обычным Maven'ом тут не обойтись. Сейчас многие используют Котлин для Андроида, но тем не менее, писать Веб-приложения на Котлине вполне можно - об этом у меня есть книга - "Modern Web Development with Kotlin".

    То что у Scala якобы проблемы с интероперабельностью с Java - это популярный миф. Например, мой самодельный блогогенератор s2gen без проблем использует как чисто Scala-библиотеки типа Monix и Circe, так и чисто Java-библиотеки типа Apache Commons, Logback и FreeMarker. Для Scala действительно написано много оберток, но это следствие распространенности языка, только и всего. Лет через пять для Котлина количество оберток будет точно таким же, если не больше - собственно, они уже появляются, например, "jackson-module-kotlin" или "RxKotlin".

    Наконец, по поводу, Java. Java действительно в большинстве проектов не нужна - и Котлин, и Скала дают схожую производительность при этом увеличивая продуктивность как минимум раза в полтора. Другое дело, что есть еще организационные барьеры - научить всех разработчиков новым языкам, перевести систему сборки, CI и т.д. - но если поиск работы не является приоритетом, то это и неважно.
    Ответ написан
    Комментировать
  • Стоит ли новичку изучать Kotlin. Scala?

    AlekseyPleshkov
    @AlekseyPleshkov
    Java/Swift developer, transhumanist, dreamer.
    Эти выражения отчасти верны. Java язык популярный и мощный, он еще долго будет востребован и нужен. Scala имеет свою экосистему и плохо завязана с Java (грубо говоря). Kotlin же не только полностью совместим с java, но и сам по себе очень продуманный язык. Писал на Kotlin несколько проектов и после него больно возвращаться на Java.

    Вывод: Советую смотреть именно в сторону Kotlin, учитывая не только качественную реализацию языка, но и полную совместимость с Java (А еще там Java автоматически конвертируется в Kotlin ;) ).
    Ответ написан
    1 комментарий
  • Что учить Java или Scala

    @lucky_libora
    Лучше все же начать с Java

    На Скалу сразу не залезешь :)

    Рекомендую все же начать с Java, в процессе обучения сформируются основные понятия и принципы программирования, а уже потом прыгать на Scala, к тому же как нам известно компилируется в Java byte code и использует многие вещи из Java

    Но стоит отметить что полноценный переход с Java на Scala не так уж прост. Scala - это непросто расширение Java с синтаксическим сахаром, это полноценный набор концептов, сочетающий в себе принципы объектно-ориентированного и функционального программирования
    Ответ написан
    Комментировать
  • Правила хорошего тона protected или private?

    Насчёт protected в случаях, когда сомневаешься, это ты зря) Ты же по сути продумываешь свою программу, знаешь примерно, что в ней используешь, а protected на ветер не бросаются. Что же насчёт private, так храни там только переменные, чтобы они были под защитой класса от внешних изменений, методы же хранят обычно под public-ом, так можно вызывать их извне класса

    Итого в итоге - переменные в private
    Protected же только для наследований
    Методы же в public , тем самым ты дефаешь переменные, но и имеешь к ним доступ в класс.
    Ответ написан
    Комментировать
  • Чем отличаются языки программирования PHP, PYTHON, RUBY?

    1. Аналогию с самими языками проводить не стоит. Аналогию стоит провести для платформ.
    Платформы вроде .net и java, которые разрабатывались для энтерпрайза, разумеется лучше для него подходят. И не важно даже, десктопное у вас приложение или веб-сервис. Важно, что в платформе есть поддержка нужных стандартов и технологий с гарантией качества от производителя.
    С другой стороны, многие компоненты таких платформ это closed-source. Поэтому, если вы не банк, а стартап, то для веб-сервиса выбирайте
    Ruby или Python.
    Социальную сеть можно сделать много на чем, но я бы делал на рельсах или джанге. А вот функционал сбербанк-онлайн я бы делал на ASP.NET MVC (т.е. на C#) или на джаве (на спринге например). Однако, тот же близзовский battle.net написан на спринге (сервер когда-то случайно отдал мне stack-trace после ошибки).

    Хотя, имхо, некоторые ключевые элементы дизайна языка все-таки влияют на возможность его применения в крупных проектах. Например, я считаю, что писать крупные проекты на языке со статической типизацией намного проще. Однако это вопрос очень холиварный.

    2. Нет, не будет. Не должно быть, если точнее. Для пользователя язык общения с сервисом - HTTP. Если в современном веб-фреймворке нельзя нормально абстрагироваться от используемой технологии, это плохой фреймворк.

    3. На PHP много чего нельзя сделать. Вернее, КАК БЫ можно все, но нормально можно только веб. Именно поэтому для меня он не язык, а какой-то шаблонизатор - слишком у него дурная история и связь с веб (что нехорошо для языка общего назначения). Конечно, современные веб-фреймворки его очень хорошо причесывают, что даже можно работать с ним, но мы же о языках говорим..

    4. Для веб-проектов между Ruby, Python и PHP человек бы выбирал исходя из своих умений. У каждого языка своя экосистема (библиотеки, пакетные менеджеры, серверы приложений/плагины для веб-сервера) и довольно непросто знать все сразу. Именно поэтому все расходятся по своим лагерям и просто работают. Первичный выбор языка часто определяет его популярность. Лет 5 назад Руби всех рвал за счет Рельсов, сегодня Питон и PHP подтянулись в плане экосистемы, поэтому ситуация уже другая.
    Если человек таки сумел познакомиться с разными языками, он выберет тот, в котором ему проще мыслить. Модель ООП, статическая/динамическая типизация - все это определяет ощущения КОНКРЕТНОГО человека от КОНКРЕТНОГО языка.

    5. PHP учится быстрее всех, но если вы не знаете других нормальных языков, лучше его не учите - испортитесь как программист. Python и Ruby учатся примерно одинаково. Изучение C++ - совсем другая история, я бы не ставил его в один ряд с Питоном - этот язык несколько другого уровня и требует других (более глубоких) знаний о вычислительной технике (т.е. он 100% учится дольше, чем Python).
    Ответ написан
    22 комментария
  • Откуда просмотры на моем частном канале в телеграмме?

    @isrofilov
    Вероятно отображается сколько раз именно вы просматривали запись
    Ответ написан
    Комментировать
  • Как можно парсить ras.arbitr.ru на php или любом другом языке?

    Отправляете POST запрос ! В ответ приходит json.
    Парсите.
    fcd36f0ddebc423583a497fca6ac4dde.png68c8cf8f16a345cdb9a24ddba7401442.png2c48a2ec9efb4a72b9166a3fe69b05e4.png

    После получения получения json парсите получаете что то типа того..
    FileName: "А49-364-2015__20170930.pdf"
    Id: "7e4efd11-dffb-4767-acae-d809f01bf5a9"

    После фомируете ссылку вида kad.arbitr.ru/PdfDocument/id/FileName
    У нас например типа http://kad.arbitr.ru/PdfDocument/7e4efd11-dffb-476...
    Отправляем file_get_content получаем .pdf
    5b3841b2330546919f0114b084257798.png2aa88fca51ae43c9ba6db1603b67f336.png
    Ответ написан
    2 комментария
  • Какой пакет нужен для Ubuntu чтобы запускать приложения написаные на JAVA?

    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update
    sudo apt-get install oracle-java8-installer
    Ответ написан
    Комментировать
  • Какая книга лучше по Java?

    @EgorNS
    Попробуйте Java Полное руководство Шилдта, если станет трудно, то возьмите Кэти Сьерра, а потом вернитесь к Шилтду. После Шилдта можно взять Хорстманна для закрепления материала, если имеете достаточно времени, а потом уже можно и Философию Java Эккеля взять. Думаю что этот алгоритм должен вам помочь :)
    Ответ написан
  • Какая книга лучше по Java?

    vitali1995
    @vitali1995
    Часто вижу этот вопрос и всегда рекомендую автора Герберт Шилдт.
    Лучшей книги не видел.
    Ответ написан
    1 комментарий
  • Реализация автопостинга ботом?

    dmtrbskkv
    @dmtrbskkv
    Кодим и декодим, а иногда кино смотрим
    Можно по расписанию включать скрипт, который будет парсить сайты и вносить в какой-нибудь массив данные. При парсинге просто проверять есть ли товар с таким же именем.
    Может будет не очень быстро, но ни базы не надо, ни чего-то ещё, кроме планировщика и одного скрипта
    Ответ написан
    2 комментария
  • Git или SVN, что?

    gricom
    @gricom
    Если в SVN вам не нравится только наличие лишних служебных файлов в каждой директории, то вы можете перейти на SVN 1.7, в котором этого уже нет
    Ответ написан
    1 комментарий
  • Как работает рекурсивный метод?

    @swinntus
    По сути, этот метод зациклан до того момента, пока n не будет = 1, после чего он начинает выполнять умножение вначале на 2, потом на 3 и т.д. пока значение не будет = n, после чего метод возвращает полученное произведение
    Ответ написан
    Комментировать
  • Как работает рекурсивный метод?

    @veontomo
    Значение возвращается тому, кто его запросил.
    Например, если запросить f.fact(1), то метод Factorial::fact сразу вернет 1.
    Для запроса f.fact(2) цепочка вызовов будет такой:
    сначала запрос Factorial::fact(2), который вернет Factorial::fact(1) * 2.
    В ответе есть снова запрос Factorial::fact(1), который возвращает 1. Таким образом, получаем 2*1, т.е. 2.

    По этой же схеме проходят и остальные примеры:
    f.fact(10) -> f.fact(9) * 10 -> f.fact(8) * 9 * 10 -> ... -> f.fact(1) * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10.
    Ответ написан
    4 комментария