The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз компилятора Free Pascal 2.4.0"
Отправлено anonymous vulgaris, 07-Янв-10 03:51 
>Я такого деления не наблюдаю.

Игнорирование очевидных  фактов не проиводит к их исчезновению.

>>Только указатель универсальное, с остальным далеко не все так просто.
>Звучит внушительно :)

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

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

>Во-первых, "сишники" понимают, что длина каждой строки программе не нужна. Длины строк
>не нужны даже для многих операций со строками - достаточно знать
>длину результирующего буфера. Зачем плодить сущности? Во-вторых, строка может быть длиннее 255 символов.

Легко проверяемая длина строки нужна всегда. Иначе - переполнение буфера. Последствия этой ошибки каждый день в новостях. Как раз там где знают длину буфера не зная длины строк.

>Сколько байтов тогда отводить под длину? Два? А может быть сразу четыре? И таскать эти байты с каждой строкой, независимо от того нужна программе длина строки или нет?

Вот эта то дополнительная информация и отличает структуру данных - строку, от именованной области памяти неизвестной длины и содержания, которая гордо названа строкой в макроассемблере под названием Си.

>может быть еще добавить динамические строки и наплодить зоопарк строковых типов как в Делфи?

1. старая строка для совместимости, и обычно уже не нужна

2. новая строка, которой для всех дел обычно и хватает (и длины там 4 байта, и динамическая она, и счетчик ссылок есть, и \0 для фанатов добавили)

3. строки совместимости с другими языками

>Решение в духе Паскаля! Ну, и наконец, вы экономите микросекунды на подсчете длины строки,

речь не только об экономии (может быть довольно значительной), а и о возможном buffer overflow

>но для подсчета числа элементов массива у вас есть время даже для написания отдельной утилиты!

Я же сказал, у меня этой проблемы нет. И я не работаю со статическими массивами неизвестной мне длины, как хотите делать вы. Как можно не знать длину своих статических данных? В вашем же случае я бы скорее всего не стал применять статический массив, а использовал ассоциативный из sdl. Там и число элементов заранее знать не надо.

А писать утилиты обычное дело для любого программиста, а на Паскале на цикл написание-отладка уходит меньше времени, чем на Си.

>Эти "сишники" вас, похоже, чем-то обидели... :)

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

>Для того, чтобы это все стало неактуально, пришлось создать современный Делфи-подобный Паскаль, который отличается от тогдашнего как небо от земли.

Вы путаете введение объектности (Си и ++ тоже рядом не лежали) с косметическими изменениями введенными давным-давно (кстати Си тоже менялся). А кроме того, лично я считаю введение многих из этих новых возможностей лишним, усложняется синтакс, без особого выигрыша по сути. Вот я например категорически против планируемого Си-подобного изменения в определении массивов.

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

The finished programs are in general about the same number of source lines as their Ratfor equivalents.  At first this surprised me, since my preconception was that Pascal is a wordier and less expressive language.

И наконец Керниган то проблемы Си понимает, поэтому сам не предрекает ему большого будущего, а выступает за Аду. В реале же улучшили Паскаль.

>Я помню еще как синтаксис Паскаля запрещал игнорировать возвращаемые функцией значения. >То есть если ты вызываешь функцию и возвращаемое ей значение тебе не нужно, ты
>все равно должен объявить переменную и сделать присваивание! Вот идиотизм-то!

В этом случае в Паскале пользуют вместо function procedure. И ничего объявлять не надо. А если функция что-то возвращает, то это обычно код ошибки или другая нужная инфа, которую игнорировать нежелательно. Как кстати и в Си.

>Не удивительно, что пришлось потом придумать "расширенный синтаксис",

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

>Абсолютно правильно! От ограничений Паскаля до сих пор никуда не денешься. Он
>даже препроцессором вменяемым до сих пор не обзавелся.

Препроцессор на самом деле не часть языка. Это просто программа, заменяющая одни наборы символов на другие. Используйте любой, например cpp.

The cpp(1) program is the C language preprocessor. The Pascal compiler driver pc normally calls cpp(1) during the first pass of a Pascal compilation. If you use the -xl switch, pc calls the alternate preprocessor cppas. Then cpp(1) and cppas will operate on files having the extension .p or .pas.

>Про проверку типов - даже у нынешнего Паскаля - и вспоминать не хочу!

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

>Парсить нетипизированные двоичные данные без геморроя просто не возможно.

Не замечал особых проблем.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру