Хотя сигнатура метода intWrapper (I)I — как будто int -> int, а RichInt$ — может быть companion object с «статическими методами» (на самом деле методами одного синглетонного экземпляра, что лежит в статическом scala.runtime.RichInt$.MODULE$)
Хз, надо разбираться, может надо это включать, но вот такой класс
class Demo {
def f(x: Int) = 1 to x
}
у меня компилируется вот в это
public class tmp.Demo {
public scala.collection.immutable.Range$Inclusive f(int);
Code:
0: getstatic #16 // Field scala/runtime/RichInt$.MODULE$:Lscala/runtime/RichInt$;
3: getstatic #21 // Field scala/Predef$.MODULE$:Lscala/Predef$;
6: iconst_1
7: invokevirtual #25 // Method scala/Predef$.intWrapper:(I)I
10: iload_1
11: invokevirtual #29 // Method scala/runtime/RichInt$.to$extension0:(II)Lscala/collection/immutable/Range$Inclusive;
14: areturn
public tmp.Demo();
Code:
0: aload_0
1: invokespecial #37 // Method java/lang/Object."<init>":()V
4: return
}
т.е. ходят в
@inline implicit def intWrapper(x: Int) = new runtime.RichInt(x)
/source>
и, судя по всему, возвращаются со свежей ссылкой на RichInt (так как дальше вызывают через invokevirtual)
почему метод называется RichInt$.to$extension0, надо копать.
Мне кажется, это уровень целого «сетевого издательства» или какого-то безумного гения. Отслеживать и публиковать изменения в 3-6 языках (Java, Scala, Clojure, Groovy, JRuby, Jython) с развитой системой фреймворков — это безумный труд. И странная специализация для одного человека.
Я сидел и в java 10 лет, но только местами узнавал, что Log4j2 догнал, а то и перегнал по фичам slf4j, или что асинхронное логирование в Log4J2 сделано на основе сверхбыстродействующего биржевого фреймворка Desruptor.
А остслеживать такое постоянно и на всех «фронтах» — респект такому мозгу!
А что Вы имеете в виду под 'дайджестом'?
1) Глубокий обзор фич всех времен и народов («Все что только можно делать c gc, java.lang.references.*, ...», «Все 100500 способов работать с многопоточностью», ...)?
2) Обзор новинок («Все новые трюки с Java 8», «Что нового в Scala 2.11», ...)?
3) Просто новости рынка (по примеру ленты у theserverside.com, infoq.com/java/news/)?
Это, скорее всего, издержки того, что в моей практике устная речь зачастую преобладает над письменной.
Согласен с тем, что от таких «артефактов» стоит избавляться.
1. Опыта промышленной разработки на Scala у меня нет.
2. Опыт использования в промышленных проектах на Java библиотек Akka, Finagle, Netty, Zookeeper — 4+ года.
3. Было бы лучше, если бы преподавал человек с большим опытом на Scala?
Да, было бы лучше.
4. Какое я имею моральное право преподавать курс по Scala?
Этот курс более академический, чем практический. Основан на исследованиях сложных моментов в языке (path dependent types, macroses, generics of higher kind, reflection api, ...) и на возможностях популярных «сложных» библиотек (scalaz, shapeless, algebird). Для эффективности курса такого рода, по моему мнению, важны проработка программы и подбор характерных примеров.
5. Не считаю ли я, что курс был бы круче, если бы его преподавал, скажем, Бурмако?
Скорее всего. Как только он начнет читать курсы по Scala сразу же к нему запишусь.
а изучать JDBC, на мой взгляд, всё равно с какой СУБД
не совсем. Даже при использовании простейших SQL-выражений встает несколько вопросов:
1. Прекращает ли DDL текущую транзакцию (commit)? В MySQL — да, прекращает.
2. Есть ли client-side/server-side prepared statements? У MySQL есть и те и другие и то, какие будут использоваться выставляются свойствами драйвера.
===
Кроме того опыт (даже поверхностный) с MySQL больше ценится на рынке.
В целом сейчас наметился тренд разочарования в MOOC. Одна из причин — все сосредоточились на платформах (низкокачественных, как на взгляд преподавателя), а не на качестве самого материала. newtonew.com/discussions/trendy-edtech-2014-dorogo-i-nepredskazuemo
«Согласно данным исследования профессора Гарвардского университета Ричарда Меншела, из 80 000 зарегистрировавшихся на девять онлайн-курсов Гарвардского университета завершило курс только 13,3%.»
«Легендарный профессор Принстонского университета Джереми Адельман, один из пионеров среди преподавателей, ведущих онлайн-курсы, в этом году ушёл из Coursera.»
«По результатам опроса, в котором приняло участие 3 000 респондентов из США, проходивших обучение как в чистом онлайн-виде, так и в смешанном, только 15% полностью довольны результатами и большую часть знаний получают именно в онлайне»
И таких данных много. Материал большинства курсов поверхностный, не дает представления о реальной работе в отрасли и т.д.
Мне кажется, что собственники площадок жертвуют «массовости» в ущерб «образованию».
То, что вижу я взаимодействуя с площадками — все хотят материал, но никто не готов платить за него, так как хотя набрать 10к-100к-1000к студентов и учить их бесплатно (странная идея, делать что-то бесплатно, как по мне).
Я же набирая всего 20-30 человек по 400$ имею вполне хороший бюджет на конкретный курс, конкретных студентов.
Но, вообще-то, я пока не видел где-то действительно хороших онлайн-курсов по Java Core. То есть
1. Охватывающий почти все что нужно (аналог 2-х томов Хорстмана)
2. Включающие большое количество тестов и лабораторных
3. Таких, что в случае прохождения 90% тестов/лабораторных можно быть уверенным, что ты знаешь почти все для собеседования.
===
Мне кажется причина в огромном объеме материала. Нужно, что бы новые Хорстманы и Эккели писали курсы под платформы. Нормальный курс должен занимать 50-80 часов видео. Только так можно рассказать чем SoftReference отличается от WeakReference, чем NIO.2 отличается от NIO, как сделать блокирующий буфер с помощью Semaphore и много других вещей, знание которых позволяет чувствовать себя уверенно на собеседовании.
LINQ — это вещь. У нас такое даже не рассматривается.
В Scala вводят какую-то сильную концепцию макросов, будет доступ к AST в момент компиляции, можно делать проверки типов, автогенерацию и прочее.
Наблюдаю перетекание части программистов с Java на Scala — она реально крута. Однако останавливает
1) на Scala мало работы, а это не очень хорошо.
2) на Scala мало фреймворков. Либо используешь Java-стек со стилем Java (Hibernate, JSF, ...) либо сыроватые фреймворки Scala. Т.е. можно из-за одной Akka пописать на Scala, однако современный проект — это десяток фреймворков, а не один.
P.S. Чистое IMHO, наблюдаю друзей, перешедших на Scala, со стороны.
Можете прояснить, что происходит и куда движется платформа в целом?
Ну не берусь говорить о планах Oracle, но я бы отметил следующий моменты:
1. Языковые фичи — это не платформа. И, по моему мнению, они не играют такой значительной роли, какую им приписывают. Скажем лично я перешел с C++ на Java потому, что в моей конторе больше платили за Java (отсутствие перегрузки операторов меня вообще не волновало). Я выбрал Java, а не C# (в то время) потому, что мне казалось, что на Java более открытая экосистема, точнее открыты сорцы всей JDK и я могу не читать MSDN, а просто подключить сорцы к IDE и читать сорцы.
2. Из платформы — введение в Java 7 байткода invokedynamic (java.lang.invoke.*), что открывает возможность написания эффективных языков с динамической типизацией для JVM. Однако, полагаю, что массовым polyglot programming не станет (т.е. смесь из Java/Scala/Groovy/Clojure) из-за сложности ведения такого проекта.
Также при переходе с Collection API на Stream API зачастую происходит жесткий рефакторинг (связанный хотя бы с ленивостью и распараллеливанием стримов), который охватывает не границы классов, а границы целых пакетов.
В итоге найти отдельный содержательный класс с фиксированной функциональностью, который перешел с Java 7 на Java 8 — это отдельная проблема.
Можно и так. Однако, оцените количество импортов именно в этом файле
import backtype.storm.tuple.Fields;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import storm.trident.Stream;
import storm.trident.operation.Aggregator;
import storm.trident.operation.CombinerAggregator;
import storm.trident.operation.ReducerAggregator;
import storm.trident.operation.impl.ChainedAggregatorImpl;
import storm.trident.operation.impl.CombinerAggregatorCombineImpl;
import storm.trident.operation.impl.CombinerAggregatorInitImpl;
import storm.trident.operation.impl.ReducerAggregatorImpl;
import storm.trident.operation.impl.SingleEmitAggregator;
import storm.trident.operation.impl.SingleEmitAggregator.BatchToPartition;
import storm.trident.tuple.ComboList;
И добавьте сюда неимпортированные, но используемые классы из этого же пакета.
Вот с таким количеством сущностей придется столкнуться человеку, читающему сорцы этого класса. Сущностей явно больше 7+-2, которые реально удерживать в голове.
у меня компилируется вот в это
т.е. ходят в
Я сидел и в java 10 лет, но только местами узнавал, что Log4j2 догнал, а то и перегнал по фичам slf4j, или что асинхронное логирование в Log4J2 сделано на основе сверхбыстродействующего биржевого фреймворка Desruptor.
А остслеживать такое постоянно и на всех «фронтах» — респект такому мозгу!
1) Глубокий обзор фич всех времен и народов («Все что только можно делать c gc, java.lang.references.*, ...», «Все 100500 способов работать с многопоточностью», ...)?
2) Обзор новинок («Все новые трюки с Java 8», «Что нового в Scala 2.11», ...)?
3) Просто новости рынка (по примеру ленты у theserverside.com, infoq.com/java/news/)?
Согласен с тем, что от таких «артефактов» стоит избавляться.
2. Опыт использования в промышленных проектах на Java библиотек Akka, Finagle, Netty, Zookeeper — 4+ года.
3. Было бы лучше, если бы преподавал человек с большим опытом на Scala?
Да, было бы лучше.
4. Какое я имею моральное право преподавать курс по Scala?
Этот курс более академический, чем практический. Основан на исследованиях сложных моментов в языке (path dependent types, macroses, generics of higher kind, reflection api, ...) и на возможностях популярных «сложных» библиотек (scalaz, shapeless, algebird). Для эффективности курса такого рода, по моему мнению, важны проработка программы и подбор характерных примеров.
5. Не считаю ли я, что курс был бы круче, если бы его преподавал, скажем, Бурмако?
Скорее всего. Как только он начнет читать курсы по Scala сразу же к нему запишусь.
При оплате группой предусмотрены скидки
2 человека — 695$
3 человека — 995$
Если группа больше — пишите в личку.
Ссылок много, так как я при переходе на Scala и при написании курса проанализировал множество источников.
не совсем. Даже при использовании простейших SQL-выражений встает несколько вопросов:
1. Прекращает ли DDL текущую транзакцию (commit)? В MySQL — да, прекращает.
2. Есть ли client-side/server-side prepared statements? У MySQL есть и те и другие и то, какие будут использоваться выставляются свойствами драйвера.
===
Кроме того опыт (даже поверхностный) с MySQL больше ценится на рынке.
newtonew.com/discussions/trendy-edtech-2014-dorogo-i-nepredskazuemo
«Согласно данным исследования профессора Гарвардского университета Ричарда Меншела, из 80 000 зарегистрировавшихся на девять онлайн-курсов Гарвардского университета завершило курс только 13,3%.»
«Легендарный профессор Принстонского университета Джереми Адельман, один из пионеров среди преподавателей, ведущих онлайн-курсы, в этом году ушёл из Coursera.»
«По результатам опроса, в котором приняло участие 3 000 респондентов из США, проходивших обучение как в чистом онлайн-виде, так и в смешанном, только 15% полностью довольны результатами и большую часть знаний получают именно в онлайне»
И таких данных много. Материал большинства курсов поверхностный, не дает представления о реальной работе в отрасли и т.д.
Мне кажется, что собственники площадок жертвуют «массовости» в ущерб «образованию».
То, что вижу я взаимодействуя с площадками — все хотят материал, но никто не готов платить за него, так как хотя набрать 10к-100к-1000к студентов и учить их бесплатно (странная идея, делать что-то бесплатно, как по мне).
Я же набирая всего 20-30 человек по 400$ имею вполне хороший бюджет на конкретный курс, конкретных студентов.
1. Охватывающий почти все что нужно (аналог 2-х томов Хорстмана)
2. Включающие большое количество тестов и лабораторных
3. Таких, что в случае прохождения 90% тестов/лабораторных можно быть уверенным, что ты знаешь почти все для собеседования.
===
Мне кажется причина в огромном объеме материала. Нужно, что бы новые Хорстманы и Эккели писали курсы под платформы. Нормальный курс должен занимать 50-80 часов видео. Только так можно рассказать чем SoftReference отличается от WeakReference, чем NIO.2 отличается от NIO, как сделать блокирующий буфер с помощью Semaphore и много других вещей, знание которых позволяет чувствовать себя уверенно на собеседовании.
Но я не анализировал качество курсов там (по Java порядка 70, кажется).
В Scala вводят какую-то сильную концепцию макросов, будет доступ к AST в момент компиляции, можно делать проверки типов, автогенерацию и прочее.
1) на Scala мало работы, а это не очень хорошо.
2) на Scala мало фреймворков. Либо используешь Java-стек со стилем Java (Hibernate, JSF, ...) либо сыроватые фреймворки Scala. Т.е. можно из-за одной Akka пописать на Scala, однако современный проект — это десяток фреймворков, а не один.
P.S. Чистое IMHO, наблюдаю друзей, перешедших на Scala, со стороны.
Ну не берусь говорить о планах Oracle, но я бы отметил следующий моменты:
1. Языковые фичи — это не платформа. И, по моему мнению, они не играют такой значительной роли, какую им приписывают. Скажем лично я перешел с C++ на Java потому, что в моей конторе больше платили за Java (отсутствие перегрузки операторов меня вообще не волновало). Я выбрал Java, а не C# (в то время) потому, что мне казалось, что на Java более открытая экосистема, точнее открыты сорцы всей JDK и я могу не читать MSDN, а просто подключить сорцы к IDE и читать сорцы.
2. Из платформы — введение в Java 7 байткода invokedynamic (java.lang.invoke.*), что открывает возможность написания эффективных языков с динамической типизацией для JVM. Однако, полагаю, что массовым polyglot programming не станет (т.е. смесь из Java/Scala/Groovy/Clojure) из-за сложности ведения такого проекта.
В итоге найти отдельный содержательный класс с фиксированной функциональностью, который перешел с Java 7 на Java 8 — это отдельная проблема.
import backtype.storm.tuple.Fields;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import storm.trident.Stream;
import storm.trident.operation.Aggregator;
import storm.trident.operation.CombinerAggregator;
import storm.trident.operation.ReducerAggregator;
import storm.trident.operation.impl.ChainedAggregatorImpl;
import storm.trident.operation.impl.CombinerAggregatorCombineImpl;
import storm.trident.operation.impl.CombinerAggregatorInitImpl;
import storm.trident.operation.impl.ReducerAggregatorImpl;
import storm.trident.operation.impl.SingleEmitAggregator;
import storm.trident.operation.impl.SingleEmitAggregator.BatchToPartition;
import storm.trident.tuple.ComboList;
И добавьте сюда неимпортированные, но используемые классы из этого же пакета.
Вот с таким количеством сущностей придется столкнуться человеку, читающему сорцы этого класса. Сущностей явно больше 7+-2, которые реально удерживать в голове.