Astaroth пишет:
> S>В смысле, ты не очень понимаешь, что такое боксинг? > Я впервые слышу это слово. Есть подозрение, что за этим кроется > какая-нить самоочевидная вещь, но термина я не знаю.
Преобразование между примитивными типами и соответствующими объектными
обертками.
Здравствуйте, Astaroth, Вы писали:
A>Здравствуйте, rockandroll, Вы писали:
VD>>> 3.4.4. Объячняем что такое боксинг. VD>>>4.4. Расказать что такое рефлекшон. Дать примеры его использования (динамическая загрузка экземпляров типов, динамический вызов метода, вывод информации о типе).
R>>А тебе не кажется что это немного не школьная программа. Скорее институтская.
A>Я, кстати, до третьего курса дожил, RSDN почитываю, даже поработать маленько успел — но до сих пор не в курсе A>Кстати, если кто объяснит (интересующее процитировал) — не обижусь.
Исторически сложилось так, что совсем-совсем все делать объектами весьма неэффективно.
Поэтому в джаве все-таки оставили примитивные типы (для арифметики) и все остальное — унаследованное от object. Но вот закавыка — иногда мы хотим использовать такой тип "указатель на что угодно". Ссылочные типы прекрасно ложатся в этот тип. А как мы получим указатель на , к примеру, int=5 в языке, где нет указателей на int? Очевидное решение — сделать простейший класс, содержащий ровно одно поле типа int. Объект этого класса будет этакой "коробочкой" для инта. Вся его функция — сохранить целое число от одного использования до другого.
Этот прием называется боксингом, от слова box. В Java для каждого из примитивных типов есть соответствующий боксящий класс (хотя ничто не мешает написать свой, если сильно охота). Обратная процедура (типа int i = myInt.Value) по доставанию содержимого из коробки называется анбоксингом.
В .Net value-типы не ограничены примитивными типами и можно создавать пользовательские типы с аналогичной семантикой. Чтобы избежать разнобоя при определении пользовательских бокс-типов данная функциональность была введена в саму платформу. В итоге box/unbox являются конструкциями IL, а C# предоставляет автоматический боксинг-анбоксинг на уровне своего синтаксиса. Т.е. попытка откастить (int)object на самом деле означает кастинг обжекта к инт-боксу и последующий анбоксинг.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Alik, Вы писали:
A>Компания MS придумала еще один шаг в процессе популяризации .Net A>В качестве эксперимента она предложила некоторым "продвинутым" школам перейти с изучения паскаля (Delphi) на С#. Переход этот, размеется, подразумевает и смену парадигмы с процедурной на объектно-ориентированную.
Прочитал (почти) все ветки обсуждения и не нашел одного важного аспекта. Если пропустил — простите. Этот аспект — правило 80%/20%.
1. 80% материала будет усвоено 20% учеников, остальными 80% учеников будет усвоено лишь 20% материала (из тех же 80%, что и первой группой). 20% материала не будет усвоено никем.
2. 80% учеников никогда не станут профессиональными программистами. Возможно, они смогут написать программку расчета кривой в своей последующей экономической деятельности, но не будут зарабтывать деньги непосредственно программированием. Из оставшихся 20% хорошими программистами станут едва ли половина, остальные будут теми самыми "мышевозителями", как их обозвал Влад.
И от этого никуда не деться. Поэтому программу обучения надо составлять так, чтобы она что-то полезное дала всем категориям.
Чтобы 20% "простого" материала было полезно всем и сразу. Это формулы, вычисления, решение уравнений, етк — вобщем прикладуха чистой воды. Формочки без зауми. Веб без подробностей. Простые типы. Методы решения конкретных задач.
Чтобы 60% оставшегося усвоенного "средней сложности" материала теми 20% процентами заложило фундамент для самообучения. Это типы, переменные, вообще более глубокий материал. Принципы и абстракции. Стандартные примеры иерархий типа фигура — замкнутая.кривая — овал — круг. Простейший полиморфизм. Алгоритмы более глубоко. Понятия О(f(x)) в простом виде.
Остальные 20% совершенно неусвоенных процентов должны быть особенно интересны и доступны "на потыкать", пусть даже без понимания и усвоения. Игрушки — самое подходящее для этой части. Сложные идеи поведения объектов, зоны ответственности, полиморфизма и т.п. Детектор коллизий (столкновение).
Главное — 100% учеников должны научиться думать, а не копировать. Согласен с Владом: обязательно учить работать с информацией, c MSDN/man/info/web/news/rss искать её, перерабатывать. Имеет смысл делать мини-курс по поиску в сети.
Такая вот моя нехитрая арифметика. Возможно, реальные проценты слегка другие, но суть остается той же. Замечу, что выбор платформы никак не влияет на результат. Предпочтительная платформа будет определяться ВУЗом и/или самообучением.
Здравствуйте, Sinclair, Вы писали:
S>В .Net value-типы не ограничены примитивными типами и можно создавать пользовательские типы с аналогичной семантикой. Чтобы избежать разнобоя при определении пользовательских бокс-типов данная функциональность была введена в саму платформу. В итоге box/unbox являются конструкциями IL, а C# предоставляет автоматический боксинг-анбоксинг на уровне своего синтаксиса. Т.е. попытка откастить (int)object на самом деле означает кастинг обжекта к инт-боксу и последующий анбоксинг.
Справедливости ради в Java 1.5 так же есть автоматический боксинг.
Здравствуйте, Astaroth, Вы писали:
VD>>Да и фигня все это. Главное что дело вы затеяли очнь правильное. Шарп — это как раз тот язык на котором нужно учить импиративных программистов. Он привьет им правильные навыки и позволит избежать перегрузки мозгов.
A>Навыки рисования окошек?
У тебя серьезные проблемы с комплексами. Учти, что эта болезнь прогрессирует.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Если детям нужно дать создать окошко в начале их изучения (чтобы заинтерисовать), то нужно сделать это не вдаваясь в подробности. Просто — Дети. запустили студию... Открыли меню Фвйл\Нью выбрали ВинФормсПриложение... Нашли кнопку в тулбоксе. Бросили ее на форму... Написали MessageBox.Show("Дарова усе!");. Вот дети вы и создали первое в своей жизни приложение. А теперь я вам объясню как это чудо работает. Обещаю вам, что те кто не будет халтурить через квартал смогут писать любые программы самостоятельно. Ну, а далее теорию.
Именно так! Сначала надо вызвать у детей "Ух ты!", потом "Я тоже так могу!", потом "А как мне это изменить?" и т.п. Голая теория приводит к заучиванию, "лишь бы сдать", "когда наконец это закончится", и "ну наконец-то спихнули этот курс".
Помнится, мой преподаватель говорил: "Есть одна секретная ячейка...", а потом начиналось программирование в системных регистрах (PDP-11 + RT11FB)...
Здравствуйте, Glоbus, Вы писали:
JP>>Я помню, когда сам ещё был маленьким , мы изучали какую-то ерунду с букашкой на экране, G>Лого
Ага, а еще была Рапира с её кортежами (суть множествами). Я только в универе понял, нахрена они нужны вообще.
Здравствуйте, VladD2, Вы писали:
VD>А зачем? Прийдет время — поймут. Надо все же понимать, что грузить частностями начинающих — это неразумное решение.
ИМХО может получиться так, что потом у них не будет необходимости использовать среду отдельно от компилятора. Из вышеупомянутое понимание (ИМХО довольно ценное) может и не прийти...