Типы данных

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: Типы данных

Сообщение Дож » 05.12.2017 19:10:13

olegy123 писал(а):
Дож писал(а):А что будет с такой программой, если pI = nil?

nil = 0

Error: Operator is not overloaded: "Pointer" = "ShortInt"

Сказать-то чего хотите?
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Типы данных

Сообщение Лекс Айрин » 05.12.2017 19:11:17

olegy123 писал(а):А то сиди и гадай, что на выходе компилятор придумает.
В этом плане Си более адекватный.


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

И, чисто так, для справки -- багтрекеры полны описаниями самых глупых ошибок в программах на сишных языках, которые в паскале отсеиваются на этапе компиляции.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Типы данных

Сообщение olegy123 » 05.12.2017 19:11:34

Лекс Айрин писал(а):
olegy123 писал(а):В си for(;true;) будет работать..


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

Лекс Айрин писал(а):
iskander писал(а):Насчет "видит": это самообман. Когда дело доходит до указателей компилятор в основном нервно курит в сторонке.


Не ожидал, что настолько :shock: Обидно... Впрочем, ссылочные типы вообще считаются бедой любого языка и рекомендуют использовать их как можно меньше.
в многопоточном программировании высокая абстрактность и возможность низкоуровневое управление - одни плюсы..
Иначе все превращается в Java - что делает VMJava - одному Sun известно или Oracle..
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Типы данных

Сообщение iskander » 05.12.2017 19:14:28

Лекс Айрин писал(а):Впрочем, ссылочные типы вообще считаются бедой

Лекс, ты опять не понял.
Не ссылочные типы, а конкретно указатели.
(если что, TObject это ссылочный тип)
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Re: Типы данных

Сообщение olegy123 » 05.12.2017 19:15:41

Дож писал(а):
olegy123 писал(а):
Дож писал(а):А что будет с такой программой, если pI = nil?

nil = 0

Error: Operator is not overloaded: "Pointer" = "ShortInt"

Сказать-то чего хотите?
простите, NULL=0

Добавлено спустя 38 секунд:
к паскалю это видимо не относится
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Типы данных

Сообщение Дож » 05.12.2017 19:17:29

Иначе все превращается в Java - что делает VMJava - одному Sun известно или Oracle..

И всему миру впридачу https://docs.oracle.com/javase/specs/jvms/se7/html/
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Типы данных

Сообщение Лекс Айрин » 05.12.2017 19:28:29

olegy123 писал(а):Дело в возможности получить код который бы работал везде и всегда, чтобы с высокоуровненвого языка можно было точно знать что делается в нижних этажах.. что становится очень актуально при аппаратном программировании.


Да ладно... Си уже давно не тот язык, что раньше. В него напихали столько разного, что проще, имхо, разобраться с ассемблером(((. К тому же, смысл разрабатывать язык, который тяжело воспринимать? Да и не может он быть настолько универсальным -- на нижнем уровне все равно есть куча кода оптимизированного под разные оси и платформы. А если так, то лучше использовать более понятный язык и который позволяет меньше пропускать ошибок.

olegy123 писал(а):в многопоточном программировании высокая абстрактность и возможность низкоуровневое управление - одни плюсы..


На могилах? Окстись! Существует куча прог использующих типичные ошибки пропускающиеся сишными компиляторами. Зачастую их находят в продуктах на следующий день после его выпуска. Все знают о них, методы их исправления/ недопущения всем известны, но что-то поток не иссякает. О крайней "не до конца исправленной" я услышал только сегодня утром.

Компы должны думать о мелочах за нас, а не мы за них. По хорошему, тут надо как в msDos ("вы точно хотите удалить файл?" "А может передумаете?" "Я предупреждаю, что это плохая идея! Удаляем?" При этом, файл фактически не удаляется.)

Добавлено спустя 2 минуты 33 секунды:
olegy123 писал(а):простите, NULL=0

Добавлено спустя 38 секунд:
к паскалю это видимо не относится


Согласно спецификации NULL не определено и использовать его значение каким либо иным способом кроме стандартного нежелательно.

Добавлено спустя 1 минуту 13 секунд:
iskander писал(а):Не ссылочные типы, а конкретно указатели.
(если что, TObject это ссылочный тип)


де факто. Де юре это отдельный тип.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Типы данных

Сообщение olegy123 » 05.12.2017 19:38:15

Дож писал(а):
Иначе все превращается в Java - что делает VMJava - одному Sun известно или Oracle..

И всему миру впридачу https://docs.oracle.com/javase/specs/jvms/se7/html/


Опасности обучения на Java. Джоэл Спольски
http://pycode.ru/2015/12/opasnosti-obuc ... l-spolski/
Счастливчики, которых учат на 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», и у вас нет ни малейшего понятия о том, что случилось, пока вы не сделаете глубокий вдох и не заставите свой мозг работать на двух уровнях абстракции одновременно.
..


Добавлено спустя 4 минуты 3 секунды:
В IDE Lazarus нет просмотра памяти. Ой, как он нужен.. Приходится переводить в PByteArray чтобы view-ить memory..
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Типы данных

Сообщение Дож » 05.12.2017 19:44:39

olegy123, какое отношение весь этот текст имеет к треду или к моему сообщению? Вы -- чат-бот из начала нулевых?

Вы написали, что никто не знает что делает VMJava, -- я вам дал ссылку на документацию по Java VM.

Я нигде не выражал потребности в чьих-то рекомендациях о том, какой язык изучать, а какой -- нет.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Типы данных

Сообщение Лекс Айрин » 05.12.2017 19:47:01

olegy123 писал(а):В IDE Lazarus нет просмотра памяти. Ой, как он нужен.. Приходится переводить в PByteArray чтобы view-ить memory..


Просто есть другие способы контроля и отладки. Пока большинству хватает.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Типы данных

Сообщение olegy123 » 05.12.2017 19:53:29

Дож претензия не к вам лично.
А о том что языки высокого уровня не всегда адекватны к точности работы машины. Я про это.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Типы данных

Сообщение Дож » 05.12.2017 20:04:34

В этом смысл языка высокого уровня и чуть ли не его определение.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Типы данных

Сообщение Mikhail » 05.12.2017 20:27:33

olegy123 писал(а):В си for(;true;) будет работать.. а в паскале много условностей, и не всегда понятно что на выходе можно получить.


Просто в Си нет цикла for. :D
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Типы данных

Сообщение bormant » 05.12.2017 22:39:39

Mikhail писал(а):Просто в Си нет цикла for

Зато можно записать оператор "стремится к 0" :D
Код: Выделить всё
  for (int i=10; i-->0;) printf(" %d",i);
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Re: Типы данных

Сообщение Azazaz » 10.12.2017 20:03:42

На заметку хацкерам:
object позволяет определить собственную (эффективную) модель управления памятью, например миллион объектов можно выделить 1-ой аллокацией как непрерывный блок памяти, в случае с class понадобится соответственно 1КК вызовов конструктора + 1КК аллокаций и все это будет иметь хреновую локальность а также потребует дополнительно памяти для хранения массива указателей. Напротив, выделение объектов в сплошной массив позволит добыть любой из них за O(1), ибо обращение по индексу же, а также ускорит последовательное обращение к ним.
object - это вам не лепешка мамонта.
Azazaz
новенький
 
Сообщения: 41
Зарегистрирован: 21.04.2015 20:00:03

Пред.След.

Вернуться в Free Pascal Compiler

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

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

Рейтинг@Mail.ru