OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 23:53

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 161 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 29 Октябрь, 2007 09:20 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
ScrollLock писал(а):
Евгений Темиргалеев писал(а):
Обсудим ещё один момент: синоним типа. Как Вы расскажете про объявление синонима типа? Если я хочу завести новое имя Name для типа T - что мне делать?

Тут всё просто - либо typedef, либо #define. Подобная технология используется в заголовочных файлов для программирования под Windows.
И я хотел бы обсудить с Вами тему с методической точки зрения. Мне хотелось бы услышать от Вас не "чем это делают", а как Вы предполагаете объяснить "как это сделать". Считайте что я -- ученик, который и задал Вам вышеуказанный вопрос.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 29 Октябрь, 2007 10:10 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 162
Цитата:
Мне хотелось бы услышать от Вас не "чем это делают", а как Вы предполагаете объяснить "как это сделать".

typedef старое_имя новое_имя; // Особенно хорошо для структур
#define новое_имя старое_имя
Здесь я не вижу принципиальной разницы между вопросами, чем это делают, и как делают.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 29 Октябрь, 2007 11:32 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
ScrollLock писал(а):
typedef старое_имя новое_имя; // Особенно хорошо для структур
#define новое_имя старое_имя
А если T массив или указатель на функцию - у меня никак не получается :(
typedef int[10] array10;
typedef void (*)() fun;
#define array10 int[10]
#define fun void (*)()

array10 a, b;
fun f, g;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 29 Октябрь, 2007 13:05 

Зарегистрирован: Среда, 28 Февраль, 2007 00:08
Сообщения: 142
Откуда: Нижний Новгород
Евгений Темиргалеев писал(а):
ScrollLock писал(а):
typedef старое_имя новое_имя; // Особенно хорошо для структур
#define новое_имя старое_имя
А если T массив или указатель на функцию - у меня никак не получается :(
typedef int[10] array10;
typedef void (*)() fun;
#define array10 int[10]
#define fun void (*)()

array10 a, b;
fun f, g;

Дык, в Си массовов нетути, вот и не получается :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 30 Октябрь, 2007 09:13 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Евгений Темиргалеев писал(а):
ScrollLock писал(а):
typedef старое_имя новое_имя; // Особенно хорошо для структур
#define новое_имя старое_имя
А если T массив или указатель на функцию - у меня никак не получается :(
typedef int[10] array10;
typedef void (*)() fun;
#define array10 int[10]
#define fun void (*)()

array10 a, b;
fun f, g;
Приведенное Вами правило годится только для типов без [], (). #define не годится также для указателей -- вообще его не стоит исп. для задания типов.
Общее правило следующее:
1) Объявить переменную Name типа T.
2) Приписать спереди typedef
Код:
int array10[10];
typedef int array10[10];
void (*fun)();
typedef void (*fun)();
Сравните лёгкость восприятия:
Оберон -- имя = тип.
Си -- чтобы ввести "новый" тип, нужно сначала объявить переменную.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 30 Октябрь, 2007 12:09 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
А вот интересная фича с typedef:
Код:
#include <stdio.h>

typedef int f (int);
typedef f* fp;

f a1; //int a1 (int);

int main ()
{
   fp x = a1;
   printf("%i\n", x(1));
   return 0;
}

int a1 (int a)
{
   return a + 1;
}
Как видите, можно использовать typedef-синоним для объявления функций. Однако для определения это уже не прокатывает. Хотя чем отличается определения от объявления как не заменой ; на { ... }?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 31 Октябрь, 2007 19:00 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 162
Евгений Темиргалеев писал(а):
Сравните лёгкость восприятия:
Оберон -- имя = тип.
Си -- чтобы ввести "новый" тип, нужно сначала объявить переменную.

Только какое отношение эти "игры" с typedef имеют к вводному курсу программирования в школе? typedef очень удобен для работы со структурами и "отвязке" от разрядности машины и компилятора, а остальное - уже изыски.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 01 Ноябрь, 2007 09:12 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
ScrollLock писал(а):
Только какое отношение эти "игры" с typedef имеют к вводному курсу программирования в школе?...
Точно такое же, как и всё остальное, обсуждавшееся здесь. Это просто ещё один пример.
В Обероне - прошёл тему и пользуйся получеными знаниями на вводном курсе, на спец. курсе, самостоятельно.
В Си - прошёл тему упрощенно на вводном курсе и всё. А за пределами вводного курса эти знания уже не помогут - надо переучиваться.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 01 Ноябрь, 2007 12:49 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 162
Цитата:
В Си - прошёл тему упрощенно на вводном курсе и всё. А за пределами вводного курса эти знания уже не помогут - надо переучиваться.

Переучиваться будет не нужно, достаточно будет расширить свои знания. Например, если человек знает и понимает обычный указатель вроде char * и int *, то другие он усвоит намного легче и быстрее. Тем людям, которым это будет нужно, смогут заглянуть и в документацию, и в K&R и Подбельского/Фомина. Но психологически для человека интереснее учить очень популярный английский (Си), чем очень редкие эсперанто или латынь (Оберон).
И ещё - изучивший азы Си легко начнёт использовать JavaScript и PHP из-за высокого сходства синтаксиса, и ему не надо будет переучиваться и сложностей будет меньше, чем в случае перехода с Оберона или Паскаля.

Цитата:
В Обероне - прошёл тему и пользуйся получеными знаниями на вводном курсе, на спец. курсе, самостоятельно.

Математическим складом ума обладают не так много людей, большинству всё равно будет нужно много конкретных примеров для усвоения любой темы, "паттернов".

P.S. Кстати, C++ получил дальнейшее развитие - язык D. В нём налицо попытка избавиться от "тяжёлого наследия прошлого" и по популярности он уже входит в двадцатку и обгоняет DELPHI.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 01 Ноябрь, 2007 14:23 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
ScrollLock писал(а):
... английский (Си), ... латынь (Оберон).


Уважаемый ScrollLock, но ведь *это* настолько дико звучит, что я не понимаю, как у Вас пальцы пошевелись напечатать это...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 01 Ноябрь, 2007 14:24 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
ScrollLock писал(а):
И ещё - изучивший азы Си легко начнёт использовать JavaScript и PHP из-за высокого сходства синтаксиса, и ему не надо будет переучиваться и сложностей будет меньше, чем в случае перехода с Оберона или Паскаля.
Использовать может и начнет. Однако, синтаксис - не цель. Знание синтаксиса # умение грамотно программировать (составить алгоритм). Первое можно освоить самостоятельно, а второму можно только научить.

Делаем, наверно, уже 10-й круг, я устал :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 01 Ноябрь, 2007 14:31 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Евгений Темиргалеев писал(а):
... Делаем, наверно, уже 10-й круг, я устал :)


Особенно если учесть, что, скажем, Информатика-21 началась в 2001 г. со страшного открытия, что студенты, вроде прошедшие и в школе, и в ун-те (причем МГУ) через основы программирования, но на с/с++, ни хрена толком не понимают...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 01 Ноябрь, 2007 14:51 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 162
info21 писал(а):
Уважаемый ScrollLock, но ведь *это* настолько дико звучит, что я не понимаю, как у Вас пальцы пошевелись напечатать это...

А что дикого я сказал? Что значительная часть молодёжи прагматична и предпочтёт учить английский, а не эсперанто или латынь? И это правильно - латынь дело хорошее, но практической выгоды обычно не даёт.

info21 писал(а):
Особенно если учесть, что, скажем, Информатика-21 началась в 2001 г. со страшного открытия, что студенты, вроде прошедшие и в школе, и в ун-те (причем МГУ) через основы программирования, но на с/с++, ни хрена толком не понимают...

Я отлично помню школьные годы. У нас был не Бейсик или Си, а Паскаль. И при этом очень многие не понимали сути программирования и с большим трудом составляли программы (хотя преподавали довольно хорошо). Для меня Паскаль первым языком не был, до него я успел поработать с QBASIC и x86 ASM.
С Си и вообще с любым языком программирования проблема такая - его надо объяснять не "филологически" и "математически", а чисто практически.

Аргументы на сайте Информатика-21 против Си меня не убедили - например, не очень обоснованная критика оператора присваивания в виде = и якобы плохая читаемость сишного синтаксиса. А модульность есть не только в Обероне, но и в Windows - например, DLL - типичные модули, отличающиеся от OCF только более хитрым форматом.
К тому же сравнение между средами Borland Pascal и BlackBox - явно не в пользу BlackBox. ИМХО, среда, нормальная документация и подсветка синтаксиса важнее философских дебатов по поводу break и continue в циклах...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 01 Ноябрь, 2007 19:35 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
ScrollLock писал(а):
Математическим складом ума обладают не так много людей, большинству всё равно будет нужно много конкретных примеров для усвоения любой темы, "паттернов".
Большенству вообще не понадобится программирование. Кто будет кормить эту ораву программистов, которая и сейчас уже не маленьких размеров?

В условиях жёсткой конкуренции место программиста будут занимать школьники, которые лучше и больше запоминают, подводят задачу под ранее решённый пример, под шаблон. Или, если проще сказать, то программистом будет тот, кто лучше запоминает, а не лучше думает. Это, в свою очередь, ведёт к застою: "думающие" проигрывают "запоминающим", а "запоминающие" ничего нового, естественно, не привносят.

Вы, ScrollLock, к этому ведёте?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 01 Ноябрь, 2007 20:03 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 162
Цитата:
Большенству вообще не понадобится программирование. Кто будет кормить эту ораву программистов, которая и сейчас уже не маленьких размеров?

Так-то оно так. Но иметь представление, как работает и как создаётся программное обеспечение (и чего от него можно ждать) никому не повредит. Большинство не пойдёт работать на нефтеперерабатывающий завод, но тем не менее в уроках химии темы про нефть имеются.

Цитата:
В условиях жёсткой конкуренции место программиста будут занимать школьники, которые лучше и больше запоминают, подводят задачу под ранее решённый пример, под шаблон.

Не так уж и плохо: меньше ошибок; если шаблоны хорошие, то и решение будет вполне качественное.

Цитата:
Это, в свою очередь, ведёт к застою: "думающие" проигрывают "запоминающим", а "запоминающие" ничего нового, естественно, не привносят.

Это означает только одно: думающих программистов нужно меньше, чем простых исполнителей. И это нормально: рабочих больше, чем инженеров и конструкторов. А программист-"кодер" не так уж сильно отличается от токаря, штукатура или электромонтажника.
Но я полагаю, что прежде чем стать "думающим" программистом, нужно стать хорошим исполнителем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 04:43 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
ScrollLock писал(а):
info21 писал(а):
Уважаемый ScrollLock, но ведь *это* настолько дико звучит, что я не понимаю, как у Вас пальцы пошевелись напечатать это...

А что дикого я сказал? ...


Ваши сопоставления языков не лезут ни в какие ворота.

А если бы образование шло на поводу у образуемых, так мы сидели бы в пещерах.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 08:42 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
ScrollLock писал(а):
И ещё - изучивший азы Си легко начнёт использовать JavaScript и PHP из-за высокого сходства синтаксиса

А изучивший азы Паскаля начнёт использовать Lua, Python, PL/SQL.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 09:35 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
ScrollLock писал(а):
А что дикого я сказал? Что значительная часть молодёжи прагматична и предпочтёт учить английский, а не эсперанто или латынь? И это правильно - латынь дело хорошее, но практической выгоды обычно не даёт.
США даёт нам очень хороший пример прагматичного образования - проходят на физике только два фазовых состояния воды (из холодильника) и не умеют работать с простыми дробями (есть калькуляторы).
info21 писал(а):
А если бы образование шло на поводу у образуемых, так мы сидели бы в пещерах.
У них большая часть населения как раз и "сидят в пещерах", хавают "обезжиренные яблоки", выигрывают суды у кампаний по производству бытовой техники "типа в инструкции не сказано, что фен под душем использовать нельзя" или "кошку в микроволновке сушить нельзя" и т. п.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 12:18 

Зарегистрирован: Среда, 01 Август, 2007 00:13
Сообщения: 162
info21 писал(а):
Ваши сопоставления языков не лезут ни в какие ворота.

Почему? Я же не сравниваю их эстетические качества, а лишь распространённость.

Цитата:
А если бы образование шло на поводу у образуемых, так мы сидели бы в пещерах.

Идти на поводу у учеников образование не может и не должно - иначе будет бардак. Но учитывать практическую значимость знаний и навыков, несоменно, должно. Латынь не понадобится почти никому (а те, кто захотят, пойдут в нужные ВУЗы или сами выучат), английский - очень многим.

Евгений Темиргалеев писал(а):
США даёт нам очень хороший пример прагматичного образования - проходят на физике только два фазовых состояния воды (из холодильника) и не умеют работать с простыми дробями (есть калькуляторы).

У них уже перегиб в другую сторону, без целостной картины отдельные факты трудно использовать. Ради интереса я читал их учебник "Химия и общество": с теорией там большие проблемы (в наших учебниках она намного лучше), но зато практические примеры очень хорошие и многочисленные, и иногда заставляющие задуматься. И неизвестно, что важнее - связь химии или быта или квантовая механика в курсе химии (всё равно уравнения Шредингера и строймол в школах не проходят, но орбитали почему-то дают).

Цитата:
выигрывают суды у кампаний по производству бытовой техники "типа в инструкции не сказано, что фен под душем использовать нельзя" или "кошку в микроволновке сушить нельзя" и т. п.

Они уже довольно давно пишут подобные дурацкие предостережения в инструкциях. И это правильно - с них чернил не убудет, суды намного дороже. Долдон прочитает и проникнутся, а умным гарантирована минута здорового смеха.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 12:21 

Зарегистрирован: Среда, 28 Февраль, 2007 00:08
Сообщения: 142
Откуда: Нижний Новгород
ScrollLock писал(а):
Аргументы на сайте Информатика-21 против Си меня не убедили - например, не очень обоснованная критика оператора присваивания в виде = и якобы плохая читаемость сишного синтаксиса. А модульность есть не только в Обероне, но и в Windows - например, DLL - типичные модули, отличающиеся от OCF только более хитрым форматом.
К тому же сравнение между средами Borland Pascal и BlackBox - явно не в пользу BlackBox. ИМХО, среда, нормальная документация и подсветка синтаксиса важнее философских дебатов по поводу break и continue в циклах...

Вы как то перескочили с языков на ОСи, да и визуально dll - это ocf от которого отрезали контроль интерфейса и увеличили в размерах (форматы не сравнивал, не ко мне).
Сравнение BP и BB не в пользу BB? BB конечно сложнее понять чем среду turbo pascal, но она не сложнее Дельфы с её интуитивно понятным "перетяни кнопку на форму", просто очень другая. Моя аналогия - Delphi=W95, BB=linux без предустановленного gui. После винды очень тяжко, но при должном терпении бонусы должны перевесить.
Документация - это да, вот автоподсветку - в топку, имхо, бесполезная вещь.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 161 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB