olegy123 писал(а):Дож писал(а):А что будет с такой программой, если pI = nil?
nil = 0
Error: Operator is not overloaded: "Pointer" = "ShortInt"
Сказать-то чего хотите?
Модератор: Модераторы
olegy123 писал(а):Дож писал(а):А что будет с такой программой, если pI = nil?
nil = 0
olegy123 писал(а):А то сиди и гадай, что на выходе компилятор придумает.
В этом плане Си более адекватный.
Дело в возможности получить код который бы работал везде и всегда, чтобы с высокоуровненвого языка можно было точно знать что делается в нижних этажах.. что становится очень актуально при аппаратном программировании.Лекс Айрин писал(а):olegy123 писал(а):В си for(;true;) будет работать..
С это совсем другой язык и у него столько недостатков, что удивляюсь в его живучести. Он позволяет программе отстрелить себе ноги, руки, голову и мелко покрошить все остальное. И, кстати, я бы не гордился данным фактом.
в многопоточном программировании высокая абстрактность и возможность низкоуровневое управление - одни плюсы..Лекс Айрин писал(а):iskander писал(а):Насчет "видит": это самообман. Когда дело доходит до указателей компилятор в основном нервно курит в сторонке.
Не ожидал, что настолько Обидно... Впрочем, ссылочные типы вообще считаются бедой любого языка и рекомендуют использовать их как можно меньше.
Лекс Айрин писал(а):Впрочем, ссылочные типы вообще считаются бедой
простите, NULL=0Дож писал(а):olegy123 писал(а):Дож писал(а):А что будет с такой программой, если pI = nil?
nil = 0
Error: Operator is not overloaded: "Pointer" = "ShortInt"
Сказать-то чего хотите?
Иначе все превращается в Java - что делает VMJava - одному Sun известно или Oracle..
olegy123 писал(а):Дело в возможности получить код который бы работал везде и всегда, чтобы с высокоуровненвого языка можно было точно знать что делается в нижних этажах.. что становится очень актуально при аппаратном программировании.
olegy123 писал(а):в многопоточном программировании высокая абстрактность и возможность низкоуровневое управление - одни плюсы..
olegy123 писал(а):простите, NULL=0
Добавлено спустя 38 секунд:
к паскалю это видимо не относится
iskander писал(а):Не ссылочные типы, а конкретно указатели.
(если что, TObject это ссылочный тип)
Дож писал(а):Иначе все превращается в Java - что делает VMJava - одному Sun известно или Oracle..
И всему миру впридачу https://docs.oracle.com/javase/specs/jvms/se7/html/
Счастливчики, которых учат на Java, никогда не получат неожиданную ошибку сегментирования памяти, пытаясь реализовать хеш-таблицу, основанную на указателях. Им не придется ломать голову, пытаясь поразрядно упаковать данные. У них не встанут дыбом волосы от того, что в чисто
функциональной программе, где значение переменной никогда не меняется, оно, тем не менее, постоянно меняется. Парадокс!
Они смогут получить высший балл по основной специальности и при отсутствии этой части мозга.
..
Я вполне готов признать, что 90% сегодняшнего кода обходится без указателей, а применять их в производственных программах просто опасно. Все правильно. И собственно функциональное программирование на практике используется не так уж часто. Согласен.
И все же владеть этими предметами необходимо в ряде самых интересных областей программирования. Например, не зная указателей, вы никогда не сможете работать с ядром Linux. Вы не поймете ни строчки кода Linux – да, фактически, любой операционной системы, – если не будете хорошо разбираться в указателях.
Тот, кто не понимает функционального программирования, не смог бы изобрести MapReduce – алгоритм, благодаря которому Google работает с гигантскими объемами данных, размещенных на многочисленных серверах. Термины «Map» и «Reduce» пришли из Lisp и функционального программирования. Понять, как работает MapReduce, может всякий, кто помнит из своего курса 6.001 или аналогичного ему, что у чисто функциональных программ нет побочных эффектов, поэтому их просто распараллеливать. Тот факт, что в Google смогли придумать MapReduce, а в Microsoft – нет, отчасти объясняет, почему Microsoft по-прежнему отстает в своих попытках наладить базовые функции поиска, тогда как Google уже решает новую задачу – построить Skynet^H^H^H^H^H^H, крупнейший в мире суперкомпьютер с с массовым параллелизмом. Я не уверен, что в Microsoft в достаточной мере понимают, как сильно они отстали в этом отношении.
А если копнуть чуть глубже, то действительная ценность указателей и рекурсии проявляется в том, что при создании крупных систем требуются гибкость ума, достигаемая в результате их изучения, и умственные способности, позволяющие избежать отсева после курсов, на которых они преподаются. Указатели и рекурсия требуют определенных способностей к рассуждению и абстрактному мышлению, а главное – умения рассматривать проблему на нескольких уровнях абстракции одновременно. Поэтому способность разобраться в указателях и рекурсии непосредственно связана с перспективой стать выдающимся программистом.
..
Кроме того, Java-колледжи не развивают мозг своих студентов, и в результате им не достает ловкости, живости и гибкости ума, требующихся для того, чтобы хорошо проектировать программное обеспечение (я не имею в виду объектно-ориентированное «проектирование», в котором уйма времени уходит на бесконечное перетряхивание иерархии объектов или мучения по поводу надуманных проблем типа «как правильно – has-a или is-a?»). Нужно учиться мыслить одновременно на нескольких уровнях абстракции, и это именно тот тип мышления, который требуется для проектирования выдающихся программных архитектур.
...
Не труднее, чем запомнить несколько дат и имен в курсе истории. Проблема в ООП – это когда ваша программа работает, но ее трудно сопровождать. Якобы. А проблема с указателями – это когда ваша программа выдает ошибку «Segmentation Fault», и у вас нет ни малейшего понятия о том, что случилось, пока вы не сделаете глубокий вдох и не заставите свой мозг работать на двух уровнях абстракции одновременно.
..
olegy123 писал(а):В IDE Lazarus нет просмотра памяти. Ой, как он нужен.. Приходится переводить в PByteArray чтобы view-ить memory..
olegy123 писал(а):В си for(;true;) будет работать.. а в паскале много условностей, и не всегда понятно что на выходе можно получить.
Mikhail писал(а):Просто в Си нет цикла for
for (int i=10; i-->0;) printf(" %d",i);
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1