Они есть, но если сравнивать с C#, Java и тем более JS — значительно меньше.
Вообще на мой взгляд Scala сейчас переживает не лучшие времена. Волна хайпа прошла, scala-only фичи потихоньку подвозят в мейнстримовые языке (те же лямбды в Java заставили задуматься очень многих о том действительно ли им всё это надо или и джавы хватит). Kotlin, опять же появился.
Вообще по своему Scala-опыту могу сказать, что использовать Scala как Better Java не очень хорошо выйдет. Оно хоть и достаточно интероперабельно, но не так всё гладко. Плюс многие Scala-библиотеки делают вещи scala-way (чем и хороши). В этом плане Kotlin выглядит сильно лучше.
Но и нельзя сказать что рынок совсем глух. Даже на неактивный в данный момент профиль на upwork раз в пару недель уж точно инвайт на Scala-интервью прилетает.
Ну и еще такое дело… чтобы понимать хайповые Scala-штуки, нужно хоть немного уметь Haskell. Не то, чтобы обязательно, но это сильно упрощает жизнь и даёт понимание того, что коллектив авторов там не совсем упоролся, а просто решает функциональным образом некоторые проблемы.
Давайте я попробую. У меня есть интересный опыт вида Scala -> JavaScript (и сервер и фронт) -> Typescript -> Scala.
всем кто пишет на строготипизированных языках нужно обязательно попробовать языки со слабой типизацией и наоборот. Например, на домашних поделках внезапно оказывается, что можно не писать тонны бойлерплейта (привет Java), и не воевать с компилятором. Такое вот чистое творчество.
как правильно заметили выше — в слаботипизированных языках типы никуда не исчезают. Они просто становятся сильно менее строгими и позволяют больше фривольностей.
судя по всему существует определённый предел для проекта с со слабой типизацией. Это и количество задействованных одновременно людей (интерфейсов нет), и объем проекта (типы — документация). Выше некоторого объема начинается настоящая боль.
насколько я вижу сейчас, в мейнстримовых языках типы — не панацея, но здорово помогает. Системы типов либо не достаточно мощные (Java, например), чтобы выражать всё задуманное. Либо чересчур сложные (Haskell, Agda, Idris), чтобы на этом можно было писать бизнес-код средними бизнес-программистами. Плюс частенько порождает некоторые теоретические тупики, которые императивно решаются в десяток строк кода, а функционально заставляют весь мир намотать на себя. Есть Scala, которая пытается быть и тем и другим, но у неё свои проблемы есть.
как минимум в мейнстримовых языках со строгой типизацией от написания тестов никуда не сбежать — система типов не достаточно мощная, чтобы выразить все операции с данными, плюс в игру вступают сайд-эффекты, внешний мир, базы данных, итд. Со стороны приёмочного тестирования, едва ли тестов меньше. В юнит-тестах — возможно.
Вообще, безотносительно самого JS мне очень нравится связка JS + TS из-за gradual typing. Хочется писать быстро — пишешь быстро на JS и надеешься на лучшее. Хочется писать надежнее — развешиваешь типы и спишь по ночам крепче.
Если кому-то интересно, я с радостью могу поотвечать на волнующие вопросы :)
Та же история с ноутбуком, спиной и шеей. Туда, куда монитор с собой не прихватить, беру вот такую штуку, и это хоть и выглядит на первый взгляд странно, но гораздо удобнее для нормального рабочего дня. http://www.nexstand.com
Тут, к сожалению, вижу буквально три варианта развития событий:
оставаясь в правовом поле написать в жалобную книгу, зафиксировать на фото/видео, отправить претензию заказным письмом с уведомлением о вручении, итд
досудебный способ решения проблем. По сути это эдакая слегка серая зона в законе. Ну например, вам говорят "И чё!", а вы говорите, что сейчас напишете развёрнутое письмо, допустим в налоговую, о том, что у вас есть подозрения, о том, что кто-то уклоняется от налогов, или нарушает противопожарные нормы или еще что-нибудь. Или заливаете на ютуб видео и отправляете его в местную газету, прокуратуру, куда там еще можно.
По факту это эдакий обмен угрозами, но разумеется угрозы должны оставаться в правовом поле и не должны быть взяты совсем с потолка. Например, пожарные нормы очень непросто соблюдать (и это в самом деле чертовски важно!).
наносить физический, психологический, моральный и кармический урон оппоненту :)
И реально нормальные, безопасные и юридически обоснованные действия можно советовать и предпринимать только руководствуясь пунктом 1.
А вот в пунктах 2 и 3 ситуация может очень резко измениться не в вашу пользу. Поэтому не надо так (в самом деле не надо).
А мы же оба в курсе, что профит от написания на Сишке будет околоминимальный, а вот памятью рулить придётся руками, не забывать освобождать ресурсы, и как-то стараться уметь жить асинхронно?
При этом самая медленная часть браузера это по-прежнему не JS, a DOM.
Интересно, насколько вариант с кинетической энергией вообще жизнеспособный? С одной стороны получается, что было бы очень круто и правильно в спортивные часы, вроде алюминиевых Apple Watch встраивать такую штуку. Сделал с утра зарядку, размялся пяток раз в течении дня, прошёл пару километров — получил заряженную батарею. Круто же.
Но в часах этого нет сегодня. А значит где-то есть подвох.
Вот. Это то, что упорно в школе вдалбливали в голову, и то, что вдолбили настолько, что не перешагнуть.
С появлением других способов хранения и передачи информации книга из монополиста в этом направлении стала одним из возможных носителей, от утраты или порчи которого, в общем-то информация никуда не исчезнет.
Разумеется это касается легкодоступной литературы. Старые книги не стоит портить.
По-разному с линуксом.
Во-первых, довольно сильно всё зависит от адаптера.
Во-вторых, последний раз когда я пробовал (чуть больше года назад на Ubuntu 16.04), оно всё спаривалось и играло, даже переключалось в режим разговора для скайпа, но не переключалось обратно.
Вот кстати из моего наскального опыта, использовать scala как better java — это в самом деле дорога в никуда. Язык действительно достаточно хорошо заточен на то, чтобы возлюбить FP, FRP, иммутабельность. Правда в какой-то момент надо научиться понимать во что это всё хотя бы примерно компилируется, но тем не менее.
Едва ли смогу сейчас указать на что-то конкретное сейчас, потому что уже больше трёх лет не пишу на Scala, но это определённо были какие-то списки рассылок, связанные с функциональщиной вроде scalaz.
Я вижу большую проблему адаптации Scala с нуля, с очень большой фрагментацией подходов и стилей библиотек.
К этому могу добавить только то, что сообщество у Scala и значительно более скромное в размерах, и по ощущениям действительно чаще чем хотелось бы снобистское. Особенно это заметно когда перепрыгиваешь совсем на другой, более распространённый стек технологий.
Вообще, по моим ощущениям, примерно с того же времени в Scala начался какой-то застой. Если тогда появление Kotlin выглядело забавным, то сейчас выглядит так, будто новый JVM проект и в самом деле стоит начинать на Kotlin. Потому что действительно better java, а не wannabe haskell, со всеми вытекающими.
При этом если потратить пару часов и имплементировать ручками CommonJS и AMD загрузчики прям по книжке, то вопросы про модули и их внутреннее устройство вообще исчезают как класс.
В большинстве случаев достаточно перенести /home. В зависимости от поставленного софта, иногда еще некоторые директории. Я например, разные IDE и прочий софт не из репозиториев и не из пакетов ставил в /opt, который тоже таскал с собой.
Вообще в какой-то момент на компьютере стало два диска — на ssd (вроде бы 120Gb) корень, и соответственно, система. Основной контент (home, opt) на hdd (примонтирован на /disk), но не напрямую. Т.е. /home/user лежит на ssd. Вещи, к которым не нужен быстрый доступ (например, дропбокс, картинки, и всякое такое) в /disk/home/user и симлинками закинут в /home/user.
Такой вот фьюжн драйв руками :)
При переезде или мажорном обновлении, весь /home/user надо дозаписать в /disk/home/user, отмонтировать, и спокойно обновляться.
Получилось сумбурно, но думаю разобраться можно :)
Они есть, но если сравнивать с C#, Java и тем более JS — значительно меньше.
Вообще на мой взгляд Scala сейчас переживает не лучшие времена. Волна хайпа прошла, scala-only фичи потихоньку подвозят в мейнстримовые языке (те же лямбды в Java заставили задуматься очень многих о том действительно ли им всё это надо или и джавы хватит). Kotlin, опять же появился.
Вообще по своему Scala-опыту могу сказать, что использовать Scala как Better Java не очень хорошо выйдет. Оно хоть и достаточно интероперабельно, но не так всё гладко. Плюс многие Scala-библиотеки делают вещи scala-way (чем и хороши). В этом плане Kotlin выглядит сильно лучше.
Но и нельзя сказать что рынок совсем глух. Даже на неактивный в данный момент профиль на upwork раз в пару недель уж точно инвайт на Scala-интервью прилетает.
Ну и еще такое дело… чтобы понимать хайповые Scala-штуки, нужно хоть немного уметь Haskell. Не то, чтобы обязательно, но это сильно упрощает жизнь и даёт понимание того, что коллектив авторов там не совсем упоролся, а просто решает функциональным образом некоторые проблемы.
Давайте я попробую. У меня есть интересный опыт вида Scala -> JavaScript (и сервер и фронт) -> Typescript -> Scala.
Вообще, безотносительно самого JS мне очень нравится связка JS + TS из-за gradual typing. Хочется писать быстро — пишешь быстро на JS и надеешься на лучшее. Хочется писать надежнее — развешиваешь типы и спишь по ночам крепче.
Если кому-то интересно, я с радостью могу поотвечать на волнующие вопросы :)
Та же история с ноутбуком, спиной и шеей. Туда, куда монитор с собой не прихватить, беру вот такую штуку, и это хоть и выглядит на первый взгляд странно, но гораздо удобнее для нормального рабочего дня.
http://www.nexstand.com
Тут, к сожалению, вижу буквально три варианта развития событий:
По факту это эдакий обмен угрозами, но разумеется угрозы должны оставаться в правовом поле и не должны быть взяты совсем с потолка. Например, пожарные нормы очень непросто соблюдать (и это в самом деле чертовски важно!).
И реально нормальные, безопасные и юридически обоснованные действия можно советовать и предпринимать только руководствуясь пунктом 1.
А вот в пунктах 2 и 3 ситуация может очень резко измениться не в вашу пользу. Поэтому не надо так (в самом деле не надо).
Ну как тут не вспомнить Пелевина и Generation П? :)
А мы же оба в курсе, что профит от написания на Сишке будет околоминимальный, а вот памятью рулить придётся руками, не забывать освобождать ресурсы, и как-то стараться уметь жить асинхронно?
При этом самая медленная часть браузера это по-прежнему не JS, a DOM.
Интересно, насколько вариант с кинетической энергией вообще жизнеспособный? С одной стороны получается, что было бы очень круто и правильно в спортивные часы, вроде алюминиевых Apple Watch встраивать такую штуку. Сделал с утра зарядку, размялся пяток раз в течении дня, прошёл пару километров — получил заряженную батарею. Круто же.
Но в часах этого нет сегодня. А значит где-то есть подвох.
Такой, например? https://meetfranz.com
Я пользовался — мне не очень зашло. Но идея, имхо, прикольная.
Вот. Это то, что упорно в школе вдалбливали в голову, и то, что вдолбили настолько, что не перешагнуть.
С появлением других способов хранения и передачи информации книга из монополиста в этом направлении стала одним из возможных носителей, от утраты или порчи которого, в общем-то информация никуда не исчезнет.
Разумеется это касается легкодоступной литературы. Старые книги не стоит портить.
По-разному с линуксом.
Во-первых, довольно сильно всё зависит от адаптера.
Во-вторых, последний раз когда я пробовал (чуть больше года назад на Ubuntu 16.04), оно всё спаривалось и играло, даже переключалось в режим разговора для скайпа, но не переключалось обратно.
Вот кстати из моего наскального опыта, использовать scala как better java — это в самом деле дорога в никуда. Язык действительно достаточно хорошо заточен на то, чтобы возлюбить FP, FRP, иммутабельность. Правда в какой-то момент надо научиться понимать во что это всё хотя бы примерно компилируется, но тем не менее.
А и в самом деле интересный товарищ http://www.cs.cornell.edu/~ross/
Спасибо
А можно подробнее про этого человека? Возможно у него есть имя? Было бы интересно узнать.
Едва ли смогу сейчас указать на что-то конкретное сейчас, потому что уже больше трёх лет не пишу на Scala, но это определённо были какие-то списки рассылок, связанные с функциональщиной вроде scalaz.
Согласен.
К этому могу добавить только то, что сообщество у Scala и значительно более скромное в размерах, и по ощущениям действительно чаще чем хотелось бы снобистское. Особенно это заметно когда перепрыгиваешь совсем на другой, более распространённый стек технологий.
Очень странная метаморфоза произошла с Typesafe.
Вообще, по моим ощущениям, примерно с того же времени в Scala начался какой-то застой. Если тогда появление Kotlin выглядело забавным, то сейчас выглядит так, будто новый JVM проект и в самом деле стоит начинать на Kotlin. Потому что действительно better java, а не wannabe haskell, со всеми вытекающими.
Пока на ноде es6 модули не допилили до production-ready. Так что CommonJS и AMD надо как минимум понимать.
Ой. Я просто оставлю это здесь: https://eloquentjavascript.net/2nd_edition/10_modules.html
Тут всё, что нужно знать про CommonJS и AMD модули. А тут еще и ES6 зацепили: https://eloquentjavascript.net/10_modules.html
При этом если потратить пару часов и имплементировать ручками CommonJS и AMD загрузчики прям по книжке, то вопросы про модули и их внутреннее устройство вообще исчезают как класс.
Twitter API же ровно так и построен.
В большинстве случаев достаточно перенести /home. В зависимости от поставленного софта, иногда еще некоторые директории. Я например, разные IDE и прочий софт не из репозиториев и не из пакетов ставил в /opt, который тоже таскал с собой.
Вообще в какой-то момент на компьютере стало два диска — на ssd (вроде бы 120Gb) корень, и соответственно, система. Основной контент (home, opt) на hdd (примонтирован на /disk), но не напрямую. Т.е. /home/user лежит на ssd. Вещи, к которым не нужен быстрый доступ (например, дропбокс, картинки, и всякое такое) в /disk/home/user и симлинками закинут в /home/user.
Такой вот фьюжн драйв руками :)
При переезде или мажорном обновлении, весь /home/user надо дозаписать в /disk/home/user, отмонтировать, и спокойно обновляться.
Получилось сумбурно, но думаю разобраться можно :)