Я понял:
open class A
class B : A()
class C : A()
data class D(val map: Map<Class<out A>, String>)
@MapKey
internal annotation class MyClassKey(val value: KClass<out A>)
@Module
object ModuleA {
@JvmStatic
@Provides
@IntoMap()
@MyClassKey(B::class)
fun provideB(): String {
return "B"
}
@JvmStatic
@Provides
@IntoMap()
@MyClassKey(C::class)
fun provideC(): String {
return "C"
}
@JvmStatic
@Provides
@IntoMap()
@MyClassKey(A::class)
fun provideA(): String {
return "A"
}
@JvmStatic
@Provides
fun provideD(map: Map<Class<out A>, String>): D {
return D(map)
}
}
@Component(modules = [ModuleA::class])
@Singleton
interface ComponentA {
fun d(): D
}
fun main(args : Array<String>) {
val dagger = DaggerComponentA.builder().build()
val d = dagger.d()
println(d.map) // {class dagger.B=B, class dagger.C=C, class dagger.A=A}
}
Мне нужно было предоставить пользовательскую аннотацию @MapKey
:
@MapKey
internal annotation class MyClassKey(val value: KClass<out A>)
И изменить
fun provideD(map: Map<Class<A>, String>): D {
на [ 118]
fun provideD(map: Map<Class<out A>, String>): D {
В JavaScript существует на самом деле интерпретатор Логотипа на базе браузера.
Вы могли также использовать эмулятор Commodore 64. Это запуск прямо от ОСНОВНОГО.
Я заинтересовался программированием, когда я был представлен языку Turing в средней школе. Turing использовался в качестве обучающего языка во многих школах в то время, и он работал очень хорошо, чтобы я представил концепции программирования. Вот описание Turing от Википедия
, Turing является подобным Паскалю языком программирования, разработанным в 1982 Ric Holt и James Cordy, затем Университета Торонто, Канада. Turing является потомком Euclid, Паскаля и SP/k, который показывает чистый синтаксис и точную машинно-независимую семантику.
Названный в честь британского программиста Alan Turing, Turing используется, прежде всего, в качестве обучающего языка на уровне средней школы и университета. Две других версии существуют, Объектно-ориентированный Turing и Turing Плюс, системы, программируя вариант. В сентябре 2001, "Объектно-ориентированный Turing" был переименован в "Turing", и исходный Turing был переименован в "Классика Turing". Turing доступен от Holt Software Associates в Торонто.
Версии для Microsoft Windows, Linux и Apple Macintosh доступны. Turing все еще широко используется в средних школах в Онтарио как введение в программирование.
В ноябре 2007, Turing, который был ранее коммерциализированным языком программирования, стал бесплатным программным обеспечением. С 28 ноября 2007, это было доступно для скачивания от веб-сайта Holt Software бесплатно для персонального, коммерческого, и образовательного использования. 1
Писк система Smalltalk является реализацией Smalltalk, о котором я услышал много пользы когда дело доходит до обучения детей в программировании. проект Etoys, предположительно, содержит много ресурсов для хранения забавы полезного опыта и мотивации.
Там книга назвала Обучение программировать от прагматического, который приспособлен к людям, которые никогда не программировали прежде и не могли бы быть чрезвычайно техническими.
Это использует Ruby, который может быть довольно легок для новых людей взять.
Я искал бы один из многих механизмов аркады и позволил бы ему играть с этим. Выберите тот, где он должен будет использовать циклы и условия и возможно некоторые процедуры.
Лично, я думаю, что основы арифметических операций и Булевой логики более важны для обучения ребенку сначала. После того, как они схватили эти понятия тогда, я думаю, идя дальше к основным конструкциям, являются соответствующими. Я просто не вижу, как ребенок мог понять условные выражения и цикличное выполнение без Булевой логики, но с другой стороны, там существуют некоторые довольно яркие дети:)
Принятие предыдущего оператора встречено, я должен был бы отдать свой голос за Python.
Я немного порван о Alice.
, С одной стороны, хорошо иметь платформу, где можно программировать с прямым визуальным удовлетворением. Это - действительно хорошая идея.
, С другой стороны, я думаю, что это - очень плохая идея иметь программу новичков исключительно перетаскиванием. Я боюсь, что это могло бы даже привести к своего рода неграмотности, где они неспособны произвести правильно написанный код, когда интерфейс перетаскивания устранен.
В то время как кажется, что это перепроектируется, можно все еще получить старую версию Взлом Hackety , который является рубиновым набором программирования, разработанным _why для подростков и начало программистов.
Я был связан с компьютерным курсом основного класса с помощью Stagecast. Это - графический язык программирования, разработанный для детей. Я нашел это идеальным вводным языком, потому что это является графическим и интерактивным. Это не требует чтения или математики, это работает на Windows и Mac OS, и идеально для простых игр, таким образом, дети мотивированы для изучения.
Etoys является, возможно, вещью, которую Вы ищете. Это - частично графический аромат smalltalk, сделанного только для детей. Это используется olpc проектом.
Две мысли приходят на ум:
Я сказал бы, что Visual Basic использования или что-то подобное, где Вы не должны волноваться о синтаксисе, фигурных скобках, и т.д. так же. Я программировал в 7, но это было в ЛОГОТИПЕ и C64 Основной. Я НЕНАВИДЕЛ ЛОГОТИП... было столь печально мне, что одна из "больших" вещей, которые Вы могли сделать, была, перемещают глупую черепаху. Однако Основной C64 (мне) был большим..., как только у меня было это вниз (пара лет), я был возбужден для изучения C и даже ассемблера C64.
Почему бы не вернуться ко дням QBasic? Это - первый язык, который я выучил (на самом деле, это был GW-BASIC, но это не относится к делу).
синтаксис намного легче получить голову вокруг (хотя непостоянный и иногда совершенно печальный). Это не преподает ничему OO, но это, вероятно, выше его головы так или иначе, поскольку это было бы моим.
Этот сайт может также представлять интерес.
Сбегите из Java! Попробуйте что-то разработанное за обучение, как царапина , ЛОГОТИП, или Схема .
PLTПопробуйте Маленький Основной , который имеет мини-язык Basic и упрощенный для младшей толпы.
Microsoft имеет несколько интересных усилий, который кажется хорошим соответствием:
popfly: http://msdn.microsoft.com/en-us/devlabs/cc950523.aspx ---"Popfly включает простой способ создать и совместно использовать игры с Вашими друзьями. Выберите из множества встроенных шаблонов или начните с нуля создавать сторону, прокручивающую игру, 2D shoot-em-up или хост других. И лучший из всех, можно начать, не пишущий строку кода"... Я думаю, что это может действительно помочь быть мотивированным:)
В плане развития семилетний вряд ли схватит основы синтаксиса даже на их разговорном языке.
Безотносительно языка или среды, которую Вы используете, я рекомендовал бы фокусироваться на идее запрограммировать как игра, а не способность записать фактические программы. К этому концу что-то можно работать из командной строки и видеть, что непосредственные результаты, как Python или, для более графического опыта, Silverlight, вероятно, были бы лучшими.
Я думаю, что Python мог бы соответствовать Вашим потребностям. Это известно за то, что было легче учиться, чем много других языков и интерактивный интерпретатор позволяют программистам сразу видеть то, что происходит, когда часть кода выполняется. НЕАКТИВНЫЙ gui, который идет с ним, прост в использовании. Это также имеет модуль черепахи через TKinter.
Царапина является другим. Разработанный в MIT специально для цели преподавать программирование детям.
Скажите ему о синтаксических анализаторах. Просто необходимо добавить контекст и обоснование к тому, почему вещи существуют. Фигурные скобки - то, так, чтобы машина, которая читает код, знала, где вещи запускаются и останавливаются.
я нахожу, что большинство людей включая детей берет вещи легко, пока Вы объясняете цель из них. Поэтому школа была ужасным отказом для меня, никто когда-либо объяснение идеи изучения половины материала.
Я изучил, как программировать, когда я был 10 в точно способ, которым Вы учили своего сына. Мой папа использовал интерпретатор GW-Basic, который шел с нашим AT& T PC6300, и мы записали игру, где компьютер задал Вам вопрос, и необходимо было ответить на A/B/C. Большое преимущество для синтаксиса в GW-Basic состояло в том, что у Вас не было многострочных операторов. Вы могли бы хотеть попробовать что-то подобное. Java, с он - фигурные скобки, могло бы быть немного жестким.
Пример кода:
10 PRINT "What color is Big Bird?"
20 PRINT "A. Blue"
30 PRINT "B. Green"
40 PRINT "C. Yellow"
50 INPUT$ ANSWER$
60 IF ANSWER$ = "C" THEN PRINT "Good Job!" ELSE PRINT "Oops, wrong answer!"
я провел часы на часы с помощью различных перестановок того синтаксиса и пишущий мои собственные "игры". И это заставило меня хотеть узнать больше... мог бы помочь.
Я категорически не согласен с людьми, которые говорят, что семи годам было бы нелегко изучать новый синтаксис. Это полностью назад. Попробуйте обучающую латынь свиньи семилетнему и к тридцати что-то неноситель английского языка. Или попытайтесь путешествовать в иностранном государстве со своими детьми. Посмотрите, кто может болтать бегло с собственными компонентами после месяца (подсказка: это, вероятно, не будете Вы).
погрузка Детей на произвольных лингвистических конвенциях очень быстрее, чем мы седые волосы делают.
Можно также выбросить Lego ™ Mindstorms ™ в качестве возможности. Он использует графический язык программирования на основе LabView.
Попросите его проверить http://scratch.mit.edu . Мой семилетний учится этому, когда мы печатаем ...
Я недавно ответил на аналогичный вопрос SO указателем на kidbasic , кроссплатформенное программное обеспечение с открытым исходным кодом.
Я прочитал этот пост сегодня, а затем случайно зашел на YUP.com и обнаружил
Обучение детей взлому (программа) с помощью Hackety Hack
Решил, что отправлю его как дополнительный ресурс для всех глядя на этот вопрос.
Схема хороша и синтаксически похожа на Logo в отношении простоты. Кроме того, Scheme предлагает очень интуитивно понятный способ понимания рекурсии и сбора таких фундаментальных концепций в информатике, которые на раннем этапе не что иное, как хорошо с большим количеством пользы.
Схема UCB также предлагает множество встроенных функций для управления предложениями, которые может иметь больше смысла для семилетнего ребенка, чем построение многоугольников и решение числовых головоломок (не говоря уже о том, что нет предела!).
Я набирал программы из книги «BASIC Fun», когда учился во 2-м классе.
Я отчетливо помню, что концепции бесконечных циклов и INPUT A $ походили на открытие гравитации. Головоломка.
Самоучка, мой прогресс был невероятно медленным, хотя я действительно достиг точки в программе, когда мне хотелось, чтобы GOSUB принимал переменные аргументы, что, оглядываясь назад, означало, что я понял указатели на функции.
Мои ранние цели включали написание ДЛИННЫЕ программы. Длительная программа - неплохая цель для 7-летнего ребенка, потому что программа с четко определенной спецификацией делает риск неудачи слишком высоким. Любой может написать длинную программу, чувствовать себя хорошо и многому научиться на этом пути.
Был целый жанр книг по программированию на BASIC для видов из 80-х. Это отличный источник идей для программирования. Однако я бы не рекомендовал использовать BASIC даже для 7-летнего ребенка - lua имеет простое ощущение BASIC, но это не сломанная чушь.
Не смотрите дальше, на самом деле существует целая обучающая платформа / ОС, предназначенная именно для этой цели: Sugar .
OLPC (один ноутбук на ребенка) Операционная система под названием Sugar теперь доступна для широкой публики, и вы можете запускать ее как виртуальную машину во всех основных операционных системах, таких как Mac, Windows и Linux.
Загрузите копию по адресу . ] Sugar Labs .
Одно интересное занятие называется TurtleArt, усовершенствованная версия логотипа 21 века. Также есть удобная для детей версия Python IDE под названием Pippy. Он на самом деле учит детей Python!
См. TurtleArt и Pippy , а также другие занятия , найденные в Sugar.
Алан Кей стоял за некоторыми новыми концепциями в Sugar OS, которая на самом деле является современным воплощением его дальновидного DynaBook. Даже будучи взрослым (который является инженером), мне весело играть с ним.
И если вы любите Sugar как виртуальную машину, вы даже можете купить оборудование и в то же время помочь бедному ребенку в другом месте в мире. .
Engadget объясняет: OLPC XO Buy-One, программа Give-One в стадии реализации
В качестве бонуса для нас, взрослых , Sugar является производным от Fedora. Так что это настоящая и полноценная ОС на базе Linux. Взломать должно быть весело. ; -)
Выполняется программа Give-OneВ качестве бонуса для нас, взрослых , сахар является производным от Fedora. Так что это настоящая и полноценная ОС на базе Linux. Взломать должно быть весело. ; -)
Выполняется программа Give-OneВ качестве бонуса для нас, взрослых , сахар является производным от Fedora. Так что это настоящая и полноценная ОС на базе Linux. Взломать должно быть весело. ; -)