Re[2]: Джоэл и указатели
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 15.03.06 10:59
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>А я вот не понимаю в каком месте сложна Общая Теория Относительности, но встречал очень небольшое количество людей думающих также.


Бог с ней, ОТО... Вот квантовая механика...
Re[3]: Джоэл и указатели
От: Tanker  
Дата: 15.03.06 10:59
Оценка: -2
Здравствуйте, dmz, Вы писали:

dmz>Я уже не знаю, смеяться или плакать.


dmz>Керниган, Ричи. Глава 5, Указатели и массивы и далее...



Это синтаксис. Фигня вобщем. Почитай Джефа Эджера например. Такое могут осилить крайне малое количество программистов.
The animals went in two by two, hurrah, hurrah...
Re[4]: Джоэл и указатели
От: dmz Россия  
Дата: 15.03.06 11:30
Оценка: +1
T>Это синтаксис. Фигня вобщем.
Какой нафиг синтаксис? Это определение и примеры использования. Понятие исчерпывающе определяется
в первых же преддложениях. И иллюстрируется на человекопонятном языке.

T>Почитай Джефа Эджера например. Такое могут осилить крайне малое количество программистов.


Читал, валяется где-то. Попытки Элджера сделать из си жабу мы рассматривать не будем — врядли
Спольски это имел ввиду.
Re[5]: Джоэл и указатели
От: Владек Россия Github
Дата: 15.03.06 12:04
Оценка:
Здравствуйте, Tanker, Вы писали:

T>Здравствуйте, dmz, Вы писали:



T>>>Ахтунг ! Джоэл — женщина !

dmz>>То, что Джоэл — ахтунг, факт широко известный. Думаете, это как-то связано с указателями?

T>Ахтунг ! Джоэл — ахтунг !


А указатель — это фаллический символ! И если программист любит играться с указателями, то ...
Re[3]: Джоэл и указатели
От: z00n  
Дата: 15.03.06 12:06
Оценка: 34 (8)
Здравствуйте, dmz, Вы писали:

dmz>А бывает вообще такое, что бы учили программировать без ознакомления с какой-нибудь (фон-неймановой) архитектурой?


Конечно, митовский MIT 6.001 (который упоминает Джоэль) так и устроен . Это вводный обязательный курс CS.
Сначала аппликативное функциональное программирование. Ближе к середине семестра вводится понятие присваивания , и заодно обясняют, как из замыкания за пять минут сделать ООП с множественным наследованием и.т.д. Потом ленивые списки потоки многозадачность и.т.д. Потом на лиспе пишут интерпретатор лиспа. Учатся в 5 строчек менять динамический скопинг на лексический, трансформировать AST и.т.п. Потом на лиспе пишут интерпретатор ленивого функионального языка. Потом недетерминистического. Потом пролога. И только после этого проектируют регистровую машину и пишут для нее компилятор.

На самом деле, современный вариант курса, который занимает один семестр, заканчивается на ленивом интерпретаторе.
Поинт был: показать, что можно двигаться от лямбда-исчисления к фон-неймановской архитектуре, и так даже проще.

http://mitpress.mit.edu/sicp/
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-001Spring-2005/CourseHome/index.htm
Re[6]: Джоэл и указатели
От: Tanker  
Дата: 15.03.06 12:07
Оценка:
Здравствуйте, Владек, Вы писали:

T>>Ахтунг ! Джоэл — ахтунг !


В>А указатель — это фаллический символ! И если программист любит играться с указателями, то ...


Видишь ли, тут все сложно. С одной стороны когда играется слишком много (чистый c/с++ник) это одно. А совсем другое — когда совсем не играется — C#.

Я думаю играться надо в меру — С#/С++
The animals went in two by two, hurrah, hurrah...
Re[4]: Джоэл и указатели
От: ie Россия http://ziez.blogspot.com/
Дата: 16.03.06 03:18
Оценка: 14 (3)
Здравствуйте, z00n, Вы писали:

Z>На самом деле, современный вариант курса, который занимает один семестр, заканчивается на ленивом интерпретаторе.

Z>Поинт был: показать, что можно двигаться от лямбда-исчисления к фон-неймановской архитектуре, и так даже проще.

Z>http://mitpress.mit.edu/sicp/

Z>http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-001Spring-2005/CourseHome/index.htm

Поделюсь еще ссылками.

Тут видео лекций по этому курсу, читают Гарольд Абельсон и Джеральд Сасман для сотрудников HP: http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/
А тут русский перевод книги: http://newstar.rinet.ru/~goga/sicp/sicp.ps.gz

На счет видео не знаю, но ссылка на перевод уже точно неоднократно проскакивала. Сейчас начал заниматься по этому курсу, стараюсь читать оригинал, но все же иногда заглядываю в перевод.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Превратим окружающую нас среду в воскресенье.
Re[3]: Джоэл и указатели
От: Павел Кузнецов  
Дата: 16.03.06 04:00
Оценка:
Mystic,

> СГ> А я вот не понимаю в каком месте сложна Общая Теория Относительности, но встречал очень небольшое количество людей думающих также.


> Бог с ней, ОТО... Вот квантовая механика...


Релятивистская
Posted via RSDN NNTP Server 2.0
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[3]: Джоэл и указатели
От: Andir Россия
Дата: 16.03.06 08:15
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>А бывает вообще такое, что бы учили программировать без ознакомления с какой-нибудь (фон-неймановой) архитектурой?


Бывает Бэйсик например ...

С Уважением, Andir!
using( RSDN@Home 1.2.0 alpha rev. 643 ) { /* Работаем */ }
Re[2]: Джоэл и указатели
От: _Obelisk_ Россия http://www.ibm.com
Дата: 16.03.06 14:01
Оценка: +2
Здравствуйте, _prometey2005, Вы писали:

_>Есть люди которым они поддаються, есть те, кто никак не может понять их концепцию. Тут или дано, или не дано.

_>Третьего не бывает.

_>На западе этот факт давно известен.


_>А вы уверены что сами понимаете их в полной мере?


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



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[3]: Джоэл и указатели
От: ekamaloff Великобритания  
Дата: 16.03.06 14:08
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>Думается мне, что проблемы с указателями возникают у тех, кто пытается найти в них скрытый смысл и какую-то глубину. Идея-то соврешенно простая: указатель — это просто адресс в пямяти.


А может переменная, хранящая адрес в памяти?

ЗЫ: Только не думайте, что я птыаюсь найти скрытый смысл .
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re[3]: Джоэл и указатели
От: Tanker  
Дата: 16.03.06 14:39
Оценка: 6 (1)
Здравствуйте, _Obelisk_, Вы писали:

_O_>Думается мне, что проблемы с указателями возникают у тех, кто пытается найти в них скрытый смысл и какую-то глубину. Идея-то соврешенно простая: указатель — это просто адресс в пямяти.


Идея простая. Только использовать сложно. На самом деле указатели это не просто IPNode* pNode = NULL; Это ручное управление памнятью. И если с адресной арифметикой все в порядке у многих людей, то с ручным управлением памяти далеко не все в порядке.

Указатели надо
1. всегда инициализировать нулем
2. всегда ставить ассерт на !NULL при использование (как минимум)
3. всегда проверять что куда присваиваешь
4. всегда затирать нулем если объект разрушен
5. следить за
а. указателями на стек
б. хип
в. в секгмент данных
6. осторожно пользоваться адресной арифметикой
7. осторожно пользоваться приведением типа

Теперь про управление памятью

8. следить за тем
а. кто выделяет память
б. кто освобождает память
9. Проверять неявное выделение памяти



Слишком много правил, не правда ли ?
The animals went in two by two, hurrah, hurrah...
Re[2]: Джоэл и указатели
От: Towiz Украина  
Дата: 16.03.06 19:06
Оценка: :))) :)))
Здравствуйте, Oyster, Вы писали:

O>Ну как-то раз я пытался одной девушке объяснить, что такое указатели. Нет, даже двум! Оба раза провал


Нет, ну я одной девушке объяснил. Она даже поняла что такое связные списки.

Потом мы поженились
Re[4]: Джоэл и указатели
От: Шахтер Интернет  
Дата: 16.03.06 20:47
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Mystic,


>> СГ> А я вот не понимаю в каком месте сложна Общая Теория Относительности, но встречал очень небольшое количество людей думающих также.


>> Бог с ней, ОТО... Вот квантовая механика...


ПК>Релятивистская


Да не. Вот КТП -- это вещь.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[3]: Джоэл и указатели
От: jazzer Россия Skype: enerjazzer
Дата: 16.03.06 21:14
Оценка: +1 -1
Здравствуйте, Mystic, Вы писали:

M>Здравствуйте, Сергей Губанов, Вы писали:


СГ>>А я вот не понимаю в каком месте сложна Общая Теория Относительности, но встречал очень небольшое количество людей думающих также.


M>Бог с ней, ОТО... Вот квантовая механика...


Она еще проще формулируется :)
"Теория унитарных операторов в гильбертовом пространстве" :)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[4]: Джоэл и указатели
От: vdimas Россия  
Дата: 17.03.06 01:14
Оценка: +3
Здравствуйте, z00n, Вы писали:

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

Когда к нам в 9-м классе завезли "Корветы" и он высветил мне строку приглашения бэйсика, как сейчас помню — это заставило меня мучаться примерно неделю. Мучаться очень сильно вопросами: "КАК" и "ПОЧЕМУ"?

Я уже неплохо владел электроникой к тому времени, но мне трудно было представить себе размер микросхемы, которая выполняла бы бэйсик аппаратно (не микропрограммно, а именно аппаратно, так мне казалось по-началу). Потом я купил себе книжку по микропроцессорам (уже даже не помню какую), где так же дано было немного от дискретки и проектировании автоматов. Проглотил ее за 3 дня и... хлоп!!! Картинка ожила, все встало на свои места. От моего прежнего понимания транзисторов до только что понятых вентилей, тактов, состояний, микро- и макро- программного управления цифровым автоматами.

Если бы не эта книжка, я бы просто продолжал нервничать, видя "разумное" поведение бейсик-консоли и не понимая "КАК ЭТО?"

А от изучения Схемы и лямбд без понимания того, на чем это все зиждется лично мне мало было бы толку. Мне был бы банально не интересен предмет, который построен на непонятных мне принципах. Какой смысл строить интерпретатор Лиспа на Лиспе, если студент понятия не имеет о формальных грамматиках? А после того как поимеет, то тем более, строить интерпретатор с этого языка будет бессмысленно, ибо не добавит навыков/образования.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Джоэл и указатели
От: z00n  
Дата: 17.03.06 12:20
Оценка: 15 (4) +1
Здравствуйте, vdimas, Вы писали:

V>Когда к нам в 9-м классе завезли "Корветы" и он высветил мне строку приглашения бэйсика, как сейчас помню — это заставило меня мучаться примерно неделю. Мучаться очень сильно вопросами: "КАК" и "ПОЧЕМУ"?

...
V>Если бы не эта книжка, я бы просто продолжал нервничать, видя "разумное" поведение бейсик-консоли и не понимая "КАК ЭТО?"
...
V>А от изучения Схемы и лямбд без понимания того, на чем это все зиждется лично мне мало было бы толку.

Я не согласен абсолютно. Хорошо рассуждать, когда добрый американский дядя уже изобрел для тебя этот "Корвет". Схема зиждется на лямбда-исчислении. Лямбда-вычислитель никому не обязан быть реализован как компьютер. И к нашему счастью, Черча и Тьюринга не остановило то, что книгу про микропроцессоры взять было негде
Схему на 6.001 не изучают — ее используют после 10-минутной инструкции по применению.

V> Мне был бы банально не интересен предмет, который построен на непонятных мне принципах. Какой смысл строить интерпретатор Лиспа на Лиспе, если студент понятия не имеет о формальных грамматиках? А после того как поимеет, то тем более, строить интерпретатор с этого языка будет бессмысленно, ибо не добавит навыков/образования.


Интерпретаторы строят не на принципах формальных грамматик. Их строят на основе вычислительных моделей. Задумайтесь, чем отличается интерпретатор Scheme от интерпретатора Haskell. Грамматикой?
А вто что сами авторы пишут о "какой смысл" — Chapter 4. Metalinguistic Abstraction

Если кому интересно попробовать — помимо SICP, есть еще, по крайней мере, 4 университетских курса (широко применяемых за пределами породивших их университетов) на которых "пишут интерпретаторы":

EOPL
PLAI
Concepts, Techniques, and Models of Computer Programming
Harvard CS152
Re[4]: Джоэл и указатели
От: _Obelisk_ Россия http://www.ibm.com
Дата: 17.03.06 13:47
Оценка:
Здравствуйте, Tanker, Вы писали:

T>Здравствуйте, _Obelisk_, Вы писали:


T>Слишком много правил, не правда ли ?


Нет. Все правила неплохо запоминаются и следовать им можно на автомате.



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[5]: Джоэл и указатели
От: Tanker  
Дата: 17.03.06 13:52
Оценка: :)
Здравствуйте, _Obelisk_, Вы писали:

T>>Слишком много правил, не правда ли ?


_O_>Нет. Все правила неплохо запоминаются и следовать им можно на автомате.


Запоминаются. Можно следовать. Вот только поработоав три года на шарпе и вернувшись в плюсы я вижу, что надо учиться заново.
The animals went in two by two, hurrah, hurrah...
Re[4]: Джоэл и указатели
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 17.03.06 14:25
Оценка:
Здравствуйте, Tanker, Вы писали:

T>Указатели надо

T>1. всегда инициализировать нулем
Хм... зачем? Указатели надо инициализировать перед использованием, как и все прочие переменные.
  P := nil; // Следуем непогрешимому правилу #1 и получаем хинт.
  P := AllocMem(16);


T>2. всегда ставить ассерт на !NULL при использование (как минимум)

В зависимости от контекста. Если мы получили адрес локальной переменной, функции/процедуры, то зачем тут Assert?
  P := @I;
  P^ := 4; // А тут, имхо, Assert лишь загромоздит кода, коинтольное изнасилование в голову выходит...

Во-вторых, отлов нулевых указателей почти везде работает на ура и не несет большой проблемы. То ли свалится Assert, то ли свалится использующий оператор --- не вижу разницы. Б\'ольшая проблема --- использование поврежденных указателей.

T>3. всегда проверять что куда присваиваешь

Целиком и полностью за, но настаиваю на том, что данный пункт справедлив не только в отношении указателей Если в переменную, которая хранит напряжение в вольтах мы поместим силу тока в амперах, то последствия могут быть не менее катастрофическими! Такая уж работа программиста, что надо проверять написанный тобою код. Всем надо пользоваться осторожно. Ошибка с указателями стоит слетом программы, а вот если забыть поставить условие WHERE ID = @ID в операторе DELETE... Если писать тяп-ляп, то тут уже все равно, указатели это, БД или что еще.

T>4. всегда затирать нулем если объект разрушен

Возможны различные схемы. В некоторых случаях это бессмысленно. А когда ты не уверен в том, что указателем никто больше не воспользется, то совет разумен.
procedure Test;
var P: Pointer;
begin
  GetMem(P, 30);
  try
  finally
    FreeMem(P);
    P := nil; // Объект разрушен, следуем правилу #4
  end;
end;


T>5. следить за

T> а. указателями на стек
T> б. хип
T> в. в секгмент данных

Тут я совсем не понял. Что значит --- за ними следить? Их надо различать в ряде случаев. Но если метод принимает указатель, то в большинстве случаев безразлично, на что он указывает.

T>6. осторожно пользоваться адресной арифметикой

Чем отличается от п. 3?

T>7. осторожно пользоваться приведением типа

Тавтология с п. 3.

T>Теперь про управление памятью

T>8. следить за тем
T> а. кто выделяет память
T> б. кто освобождает память
Иногда это проблема. Иногда это тривиально. К тому же указатели это не обязательно динамическая память.

T>9. Проверять неявное выделение памяти

В смысле, проверять? Вот в .NET вся динамическая память выделяется неявно, как мне ее прикажете проверять???

T>Слишком много правил, не правда ли ?

Все с легкостью выводимо из понимания архитектуры. К тому же приведенные правила не имеют догматичный характер...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.