Очно-дистанційні курси інформатиків

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Очно-дистанційні курси інформатиків » Консультації » Науковий керівник


Науковий керівник

Сообщений 31 страница 60 из 79

31

Стукалова И.В. написал(а):

Андрей, как мы решили называть кучу? Не очень нравится этот термин.

Я б запропонував не користуватися цим терміном для позначення динамічної пам'яті в C#.

По-перше він декому не подобається.
По-друге heap натякає на структуру даних, на подробиці реалізації. А нам краще абстрагуватися від подробиць реалізації динамічної пам'яті.

Пропоную просто "динамічна пам'ять", що є теж поширеним терміном.

0

32

Хтось (в першу чергу, науковий керівник :) задумувався, наскільки варто урізати нашу програму? Вона ж так і залишилась на університетському рівні.

Для свідомого використання терміну "купа" потрібно впевнено користуватися динамічними змінними і т.п. Це дійсно входить до завдань нашого курсу?

Давайте, доки всі у відпустках :), трохи уріжемо програму і визначимося з кількістю годин. Судячи з активності авторів посібника, видно, що універсальної штуки (35+35 за бажанням) зробити не встигнемо. Та й стратегія для цього вибрана не така. Щоб вдалась така задумка, перші 35 годин повинні бути достатньо автономною частиною курсу. Давайте будемо робити 35-годинний курс, який реально можна "запустити" в багатьох школах (якщо не у 8-му, то в наступних класах). За такий час можна зробити досить багато.

Зараз варто з цієї точки зору урізати програму (лишити елементи візуального програмування, алгоритміку і основи ООП) і врешті перейти до другого етапу: написання чернеткового варіанту розділів посібника.

А щодо назви "купа" - не треба комплексувати. Таке слово я знайшов у дещо іншому контексті: "Купа - це повне бінарне дерево, в якому значення синів кожного вузла не менші, ніж значення вузла". Звучить нормально. Незвично - нічого страшного. Згадайте, як у 1996-му сприймалося слово "гривня"... :)

Кухар Андрій написал(а):

Пропоную просто "динамічна пам'ять"

По моєму, динамічна пам'ять, це не те ж саме, що купа. Динамічна пам'ять - це область пам'яті, відведена під динамічні об'єкти, а купа - це якраз самі об'єкти, що розміщені в динамічній пам'яті. Чи тут немає ніякої різниці?

0

33

А що, на http://csharp.stikipad.com зовсім ніхто не заходить?

0

34

Привіт усім.

Пилипчук О.П. написал(а):

Давайте, доки всі у відпустках , трохи уріжемо програму і визначимося з кількістю годин.

Я за, тому що однозначно мій розділ пропадає.

Пилипчук О.П. написал(а):

Згадайте, як у 1996-му сприймалося слово "гривня"...

Гривня є гривня, а купа є купа. Буде і нам купа....., за не виконану роботу. І з цією асоціацією нічого не вдієш. Для нашого варіанту динамічна память, варіант вдалий.

0

35

Пилипчук О.П. написал(а):

Щоб вдалась така задумка, перші 35 годин повинні бути достатньо автономною частиною курсу. Давайте будемо робити 35-годинний курс, який реально можна "запустити" в багатьох школах (якщо не у 8-му, то в наступних класах).

Я радий, що мою думку зараз підтримав староста. Можливо і нема причини хвилюватися і всі активно запрацюють з 1 вересня. Але чи вистачить часу?
Мої завдання до 1 липня залишилися не виконаними. Зрозуміти причини важко але факт залишається фактом. Бути у складі активу і бути самим активом, як виявилось, це різні речі. Заспокоюю себе тим, що всі заглибилися читанням і паралельно з відпочинком активно штудіюють C#.

0

36

S.Vapnichny написал(а):

Для нашого варіанту динамічна память, варіант вдалий.

Тобто, терміни "динамічна память" і "купа" зробити синонімами? Чи вони й так синоніми? Якщо ні, то не можна робити таку підміну.

Нагадую:

Пилипчук О.П. написал(а):

По моєму, динамічна пам'ять, це не те ж саме, що купа. Динамічна пам'ять - це область пам'яті, відведена під динамічні об'єкти, а купа - це якраз самі об'єкти, що розміщені в динамічній пам'яті.

Тут є помилка?

0

37

Пам'ять, у якій зберігаються дані під час виконання програми, поділяється на дві області:  стек та динамічну (хіп, купа). Стек використовується для збереження величин, пам'ять під які виділяє компілятор, а у динамічній області пам’ять резервується або виділяється під час виконання програми  за допомогою спеціальних команд. Найуживанішим поділом типів у С# є поділ по способу збереження на типи-значення та посилкові типи. Елементи типів значень являють собою послідовність бітів в пам’яті (дані), необхідний об’єм якої, виділяє компілятор. Величини посилкового типу зберігають не самі дані, а вказівку на них, при цьому самі дані зберігаються у динамічній області (у купі, в хіпі). Якщо кишеня, це модель пам’яті, то  гроші у ній – типи-значень, а кредитна карточка – посилковий тип.
Мені здається, що цього досить для пояснення. І можна у подальшому цю термінологію зберігати.

0

38

Мне кажется, что динамическая память - это и есть куча. Просто хип перевели. Действительно куча - это способ хранения объектов в динамической памяти. Можно  не углубляться и лишь слегка вспомнить динамическую память. Но понятие дать обязательно нужно. Ведь даже string - ссылочный тип.

0

39

А чи не ускладнюємо ми собі життя? Спробував пошукати у Шилдта частинку слова "динамическ" і був приємно вражений! Слово інтенсивно використовується тільки в контексті, пов'язаному з динамічною ідентифікацією типів. Навіть "динамічний масив" - це не масив, створений у динамічній пам'яті, а тип даних:

>ArrayList - Динамический массив, т.е. массив который при необходимости может увеличивать свой размер.

Очевидно, у С# зроблено все (чи майже все?) для того, щоб програміст не думав про види пам'яті. Результат використання функції New() зрозумілий і без заглиблення у структуру пам'яті.

Висновок: не потрібно вводити термін "купа" і/або "динамічна пам'ять". принаймні, для початківців.

0

40

Пилипчук О.П. написал(а):

Навіть "динамічний масив" - це не масив, створений у динамічній пам'яті, а тип даних:
>ArrayList - Динамический массив, т.е. массив который при необходимости может увеличивать свой размер.

Мені здається, що динамічний масив і динамічна память - це теж саме, що каша у тарілці і каша в голові.

Пилипчук О.П. написал(а):

Висновок: не потрібно вводити термін "купа" і/або "динамічна пам'ять". принаймні, для початківців.

Якщо ніде не згадувати про класифікацію типів та не використовувати посилковий тип. Я ще раз наголошую, що динамічна память, купа, хіп - для нашого курсу,  у доброму наближені, це одне і теж. Два - три речення у параграфі, про два види памяті, які використовуються у С#, курс не перевантажaть, і у подальшому полегшaть нам справу.

0

41

S.Vapnichny написал(а):

Мені здається, що динамічний масив і динамічна память - це теж саме, що каша у тарілці і каша в голові.

Так отож. Ми цю кашу заварили, нам її і сьорбати. Ще раз цитую того ж "авторитета":

Оператор new динамически (т.е. во время выполнения программы) выделяет память для объекта и возвращает ссылку на него. Эта ссылка (сохраненная в конкретной переменной) служит адресом объекта в памяти, выделенной для него оператором new. Таким образом, в С# для всех объектов классов должна динамически выделяться память.

Зверніть увагу, йдеться просто про ПАМ'ЯТЬ. Специфікатор static теж означає далеко не те саме, що статичні дані в С++ і Паскалі.

S.Vapnichny написал(а):

Пам'ять, у якій зберігаються дані під час виконання програми, поділяється на дві області:  стек та динамічну (хіп, купа). Стек використовується для збереження величин, пам'ять під які виділяє компілятор,

У Шилдта слово "стек" використано лише там, де пояснюється, як програмним шляхом реалізувати власний стек. Цікаво, правда?

Якщо Шилдту вдалося уникнути використання термінів "динамічна пам'ять", "купа", "стек", то навіщо нам це ускладнювати.

0

42

Так ось: память, яку виділяє оператор new - динамічна память, а статичні дані, зберігаються у памяті, яка має назву стек. Стек, як структура даних і стек як вид памяті у С# - це різні поняття, спільне у них тільки спосіб організації. А тому Шилдта стек - це структура даних, просто він автоматично це переніс із інших мов, на яких він розпочинав свою програмістську діяльність. C# - має свої суттєві відміності, які вимагають свого тлумачення. Якщо у С# - статичні змінні заганяються в стек, то чому це так і не назвати, а оператор new - створює динамічну память. Якщо у фізиці різні величини позначаються одними і тими ж символами, то що будемо вводити оригінально-запашні букви? Чи може канонізуємо Шилдта - і нехай буде так як у нього?

0

43

Для глибшого розуміння, то Шилдта треба читати в оригіналі, бо усякий перевод, це деяке спотворення, яке зумовлене людським фактором. Якщо типи у С# поділяються на два вида, один із них має спосіб організації стеку, то чому це так і не назвати, а інший вид динамічно створюється  у динамічній памяті - що тут ще краще видумаєш?

0

44

Частина динамічної пам'яті, яка ще не зайнята під змінні називають купою. Коли відбувається резервування комірок під змінні, з купи виділяються комірки, ці комірки після резервації вже купі не нележать. Коли відбувається звільнення (вивільнення) комірок, то ці комірки знову повертаються в купу. Таке розуміння понять було  в паскалі, не думаю, що кардинально має змінитись в С#.

0

45

Цинчик Тетяна написал(а):

Частина динамічної пам'яті, яка ще не зайнята під змінні називають купою

Які змінні? Посилкові - да, статичні -ні. Як говорив капітан Врунгель, як корабль назвемо, так він і попливе. Купа так купа. Хіп так хіп. (а динамічна - краще, а може купа - краще - гарантія, що не потоне).

0

46

Типы данных - мой раздел. Поэтому я считаю, что понятие о двух видах организации памяти дать надо. Используются и типы-значения и ссылочные типы. Если используются - сказать надо. Никто не говорил о том, чтобы вдаваться в подробности. Но назвать надо, и назвать правильно. Поэтому я и советовалась по терминологии. Кстати, хип - мне нравится. Против купи я возражаю. Тогда лучше действительно, использовать только понятие - динамическая память. Пусть Андрей скажет. Как скажет, так и сделаю. Насчет потонуть - я не поняла ассоциации. Кстати у Шилдта отвратительный переводчик. Я посмотрела фамилию даже. Видно, что человек в предмете не разбирается совсем. Может язык и знает. Но математики не знает тоже. Я не сразу поняла, что он наименьший общий делитель называет общим множителем. Только из примера. Я думаю, что ляпов там еще предостаточно. А уж такое слово как стек...

0

47

Нам не потрібно ділити поняття "динамічна память" - так як у Паскалі (див. повідомлення Т.Цинчик). Тут простіше: є фізична память компютера - це не значить, що всю цю память використовує програма. Створюється новий обєкт посилкового типу оператором new, зразу ж виділяється динамічна память (кількість фізичної зменшується), коли ж  обєкт вивільняється, то і вивільняється динамічна память. Немає у програмі посилкових типів - то програма не виділяє динамічну память. Між іншим оператором new значимі типи теж можна створювати.

0

48

Стукалова И.В. написал(а):

А уж такое слово как стек...

Зі словом стек там, ніби, нормально... Просто згадується воно в різних контекстах. Але редагування перекладу Шилдта - не головна наша задача.

S.Vapnichny написал(а):

статичні дані, зберігаються у памяті, яка має назву стек

Шановні колеги! Дозвольте дурне питання. Що ви маєте на увазі під статичними даними? У С#, здається, немає того, що в Паскалі називалося статичними даними.

Стукалова И.В. написал(а):

Пусть Андрей скажет. Как скажет, так и сделаю.

Тому також пропоную дочекатися наукового керівника.

А до того - обговорити українські переклади термінів, бо звикнемо до неправильних варіантів - важко буде потім виправлятися. Мені не подобається слово "посилкові" (ссылочные), краще - "посилальні" (тобто, пов'язані з посиланнями).

S.Vapnichny написал(а):

Насчет потонуть - я не поняла ассоциации.

А Сергій так старався...  :lol:

Всі поступово звикають до слова "купа" - непоганий переклад. Вже навіть обростає фольклором. "Хіп" - не годиться. Хоча, чомусь надіюсь, що Андрій "заріже" використання цього ПОНЯТТЯ взагалі.

S.Vapnichny написал(а):

значимі типи теж можна створювати

Малось на увазі - "типи-значення". Трохи незручно, що через дефіс. "Значеннєві типи" - звучить непогано, але незвично: "Типи поділяють на значеннєві та посилальні".

Якщо не помиляюсь - п. Вапнічний - автор 500-го повідомлення на нашому форумі. Вітаю!

0

49

Вдячний за вітання.

Пилипчук О.П. написал(а):

Що ви маєте на увазі під статичними даними?

Маю на увазі типи-значення можна значеннєві. Щодо термінів посилкові чи посилальні, то погоджуюсь краще посилальні.

Пилипчук О.П. написал(а):

А Сергій так старався...

- радий що Ти зрозумів мій натяк. Купа непоганий переклад, але якщо на англійську мову переклададти такі словосполучення: "купа листя" та "купа книжок" то для слова купа відповідатимуть різні англійські слова.

0

50

Я вам, конечно не конкурент в плане перевода, но термин посилальний у меня вызвал определенные ассоциации (Сережа такие любит интерпретировать). В русском языке слова послать и сослаться имеют разные и звучание и смысл. И я взяла словарь. И действительно - послать - послати
сослаться - послатися
ссылочный - посилальний.
Значит, посилальний тип. А тип-значение не обязательно писать чере дефис. У Шилдта - типы значений и ссылочные типы, т.е. типи значень та посилальні типи. А что касается купи - пусть будет просто дінамічна пам'ять.

0

51

Я думаю, що ми спільно дійшли згоди: посилальний тип, значеннєві типи, динамічна память (теж саме що купа, хіп ), та стек - область памяті де зберігаються значеннєві типи. Хотілося б уже почути і Наукового керівника - а може теж на Золотих пісках?
У мене друге запитання, давайте спільно сформулюємо визначення класу. А може це описове визначення? Я пропоную так:
клас  – це опис всіх необхідних змінних і дій, які  повинні над ними виконуватися. Змінні називаються полями класу, а дії – методами класу. Клас створюється     під час розробки програми, враховуючи взаємозв’язки між вхідними та вихідними даними. Об’єкт створюється на основі класу під час виконання програми. Його ще називають екземпляром класу. Методи та поля ще називають членами класу.

0

52

Стукалова И.В. написал(а):

термин посилальний у меня вызвал определенные ассоциации

Цілком нормальні асоціації: звертаєшся до змінної, а вона посилає тебе далі :), тобто, містить вказівник.

В українській мові: "послати що(кого)-небудь", "послати куди-небудь", але "послатися на щось(когось)". Наприклад, ми, час від часу, посилаємося на Шилдта, тобто, використовуємо посилання на нього. "Ссылка" - "посилання". Є ще "ссылка в Сибирь" - "заслання до Сибіру", ала це - з іншої опери.

0

53

S.Vapnichny написал(а):

клас  – це опис всіх необхідних змінних і дій, які  повинні над ними виконуватися. і т.д.

Спробую уточнити:

Клас  – це опис об'єкта, що включає перелік даних (змінних, констант), які містить об'єкт, і дій, які  можуть над ними виконуватися. Змінні та константи називаються полями класу, а дії – методами класу. Методи та поля разом називають членами класу. Клас створюється під час розробки програми. Під час виконання програми на основі класу створюються один або більше об’єктів цього класу. Їх ще називають примірниками (чи все-таки екземплярами?) класу.

0

54

А их переменные - переменными экземпляра.

0

55

Пилипчук О.П. написал(а):

Їх ще називають примірниками (чи все-таки екземплярами?) класу.

Мені здається, що краще екземпляр.

Пилипчук О.П. написал(а):

Методи та поля разом називають членами класу.

- може зупинемось на такому варіанті:
Методи та поля разом називають елементами класу.
Саша, уточни слово "разом". Якщо клас містить тільки поля, то що він немає елементів?

Отредактировано S.Vapnichny (2007-07-13 20:44:35)

0

56

У цьому розділі треба лише формулювати питання і чекати відповіді. Для обговорення термінології я відкрив іншу тему.

0

57

Добре, зрозумів. Будемо виправлятись.

0

58

Така програма (фрагмент з Шілдта):

using System;
class CastDemo {
public static void Main() {
byte b;
int i ;
i = 257;
b = (byte) i;
Console.WriteLine("b после присваивания 257: " + b + " — с потерей данных.");
}
}

при запуску в середовищі SharpDevelop викликає в процесі виконання виняткову ситуацію:

Exception System.OverflowException was thrown in debuggee:
Arithmetic operation resulted in an overflow.

У Шілдта сказано, що програма має працювати. В чому причина?
Думав, просто тому, що є різні режими компіляції: відлагодження і "реліз", але коли включив "реліз", програма все-одно не запрацювала. Чому не працює примусове зведення типів зі втратою інформації?

0

59

В системе включена автоматическая проверка переполнений. Генерацию исключений при переполнении можно отключить командой unchecked.  Соответственно checked - включить.
unchecked
     {
           a = b+c
      }

Отредактировано Стукалова И.В. (2007-09-07 22:30:55)

0

60

Андрій Володимирович, запрошую 18 і/або 19 з 10.00 для зустрічі з авторами майбутнього геніального видання для шкіл.
Ще готовий видати готівкою зароблені кошти на попередніх виступах (кілька сотень). Мабуть мотивація переконлива.
Колеги, приєднуйтесь до запрошення на зустріч з нами нашого наукового керівника.

0


Вы здесь » Очно-дистанційні курси інформатиків » Консультації » Науковий керівник