LINUX.ORG.RU

Системное программирование в UNIX средствами FreePascal


1

0

А.П. Полищук и С.А. Семериков написали новую книгу, охватывающую большой круг вопросов системного программирования для UNIX с использованием FreePascal, кроме разве что хакинга ядра :) Всего в книге 13 глав и 4 приложения. Каждая глава в книге заканчивается практическими упражнениями. По словам Семерикова все примеры были проверены в ALT Linux Master 2.2

Ознакомиться с текстом книги можно в FIDO конференции RU.FREE.PASCAL куда он был помещён 26.09.2005 самим Семериковым или, что более привычно, скачать по приведённому в ссылке адресу.

>>> Скачать книгу "Системное программирование в UNIX средствами FreePascal"

Re: Системное программирование в UNIX средствами FreePascal

Ух-ты! Фидо ещё живо? 100 лет там не был.

Etch
()

Re: Системное программирование в UNIX средствами FreePascal

Делать больше нечего, чем заниматься системным программированием на паскале.

suser
()

Re: Системное программирование в UNIX средствами FreePascal

У них есть более может быть интересная книга это "Программирование в X Window средствами Free Pascal", выпущенная в 2003 году, найти её часть можно на том же сайте: http://freepascal.ru/article//book/ Более интересная, потому что систематизированой информации по X'ам явно маловато вообще, особенно на русском языке.

Что касается этой книги, то её ещё можно рассматривать как просто интересную книгу по UNIX'ам, тем более что авторы признаются:

> В основу данной книги положено второе издание руководства программиста UNIX System Programming: A programmer's guide to software development by Keith Haviland, Dina Gray, Ben Salama. Очень удачное по структуре и подбору примеров, это руководство является одним из лучших учебников по системному программированию в UNIX, поэтому с самого начала мы посчитали уместным сохранить их, исправив и дополнив в соответствии с новыми возможностями Linux/BSD и компилятора Free Pascal.

Да и на Паскале, как я убедился, не так уж мало народу пишет, может эта информация поможет кому-нибудь уйти от Delphi/Windows в Linux/BSD, а в книге даются корректные правила программирования в Unix.

anonymous_incognito ★★★★★
() автор топика

Re: Системное программирование в UNIX средствами FreePascal

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

abrasiv
()

Re: Системное программирование в UNIX средствами FreePascal

Мегаруллёз !!!!
Теперь ждём кто первый напишет "Методика написания кернелов типа как в Альт Линухе за 21 день одной мышой через Визуал Васик для домохозяек"

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

имхо люди которые определяют развитие давно отошли от паскаля, или я не прав ?

Syncro ★★★★★
()

Re: Системное программирование в UNIX средствами FreePascal

мда.. еще бы на алголе, фортране или языке Ада (хехе) ядро-хакингом занимались..

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

Ну чтож, тоже полезное дело человеки замутили....

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

Не, паскаль -- неспортивно, давайте сразу средствами VB.NET...

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

Что мне нравится в паскале, так то что глобальные переменные можно объявлять только в одном месте. Представляю, насколько бы могла затянуться отладка многопоточности в одом проекте на паскеле, если бы глобальные переменные были бы раскиданы по всему коду, как это бывает у программистов, с плохим стилем С/С++.

Хотя сам пишу больше на С/С++, но к паскалю отношусь хорошо. Чего и вам желаю.

alman ★★★
()

Re: Системное программирование в UNIX средствами FreePascal

> Дети, блин. Если бы не pascal, у нас бы не было vi :)

А я то почему-то считал, что во всем виноват медленный модем (тогда быстрее то и не было) Билла Джоя.

"So I had a terminal at home and a 300 baud modem so the cursor could move around and I just stayed up all night for a few months and wrote vi."

"It was really hard to do because you've got to remember that I was trying to make it usable over a 300 baud modem. That's also the reason you have all these funny commands."

Так что вся "изюминка" vi была следствием медленного модемного доступа.

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

У Паскаля менее гибкий синтаксис, чем у Си и макры отсутствуют, одно только begin...end задалбывает иногда, не говоря уж про навороченные выражения с преобразованиями типов, например. Или оператор with -- вот уж в чём в Си просто нет потребности. Тем не менее, никто не мешает в Си выдерживать строгий стиль и не раскидывать те же глобальные переменные по коду.

Мне в паскале (FreePascal'е), по сравнению с Си (Си++) больше нравится поддержка многомодульности на уровне языка, вложенные функции, а если говорить про ООП, то как-то логичнее оно добавлено к паскалю, чем в Си++

anonymous_incognito ★★★★★
() автор топика

Re: Системное программирование в UNIX средствами FreePascal

2anonymous (*) (03.10.2005 1:10:20): мда.. еще бы на алголе, фортране или языке Ада (хехе) ядро-хакингом занимались..

Хехе, вот на Аде-то хакингом реалтаймовых юниксов и занимаемся, поэтому у меня в гараже стоит BMW X5 http://www.bmwusa.com/vehicles/x5/30i/default и Porsche 911 carrera http://www11.porsche.com/usa/models/911/911-carrera/) :P , а вот Вы судя по всему занимаетесь кодингом на ся и у вас стоит в гараже запорожец :)

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

Строки в паскале - рулез! По некоторым данным, 90% процессорного времени в сишных программах уходит на поиск конца строки. В паскале такого нет, и слава богу! :-)

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

>Строки в паскале - рулез! По некоторым данным, 90% процессорного времени в сишных программах уходит на поиск конца строки. В паскале такого нет, и слава богу! :-)

Бред! Или ты на С/С++ работае только с текстом? Linux Kernel 90% времени сьедают строки???

I3rain
()

Re: Системное программирование в UNIX средствами FreePascal

Конечно рулез, не более 255 символов! Зато в C++ можно реализовать строки по разному, например при помощи STL.

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

> TurboPascal строка 8 бит

> Delphi 16 бит

> FreePascal ???????

http://www.freepascal.org/docs-html/ref/refsu8.html

http://www.freepascal.org/docs-html/ref/refsu9.html

http://www.freepascal.org/docs-html/ref/refsu10.html

http://www.freepascal.org/docs-html/ref/refsu11.html

http://www.freepascal.org/docs-html/ref/refsu13.html

anonymous
()
Ответ на: Re: Системное программирование в UNIX средствами FreePascal от anonymous_incognito

Re: Системное программирование в UNIX средствами FreePascal

> систематизированой информации по X'ам явно маловато вообще, особенно на русском языке

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

> Да и на Паскале, как я убедился, не так уж мало народу пишет,

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

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

Ерунда. "Системное" это от слова "Си".

bugmaker ★★★★☆
()

Re: Системное программирование в UNIX средствами FreePascal

> Delphi 16 бит

Вызывающе неверная информация: http://delphi.about.com/od/beginners/l/aa071800a.htm

> All 32-bit Delphi versions use long strings by default. Delphi 2 brought to Object Pascal Long String type. Long string (in Delphi's help AnsiString) represents a dynamically allocated string whose maximum length is _limited_ _only_ _by_ _available_ _memory_.

birdie ★★★★★
()

Re: Системное программирование в UNIX средствами FreePascal

Все так паскаль расхваливают, что тоже захотелось его ПОЗНАТЬ! :-)

Selecter ★★★★
()

Re: Системное программирование в UNIX средствами FreePascal

>>Строки в паскале - рулез! По некоторым данным, 90% процессорного времени в сишных программах уходит на поиск конца строки. В паскале такого нет, и слава богу! :-)

Вы паскалевскую строку хоть раз видели? Указатель на строку нулевой длины чему равен? Адресу буффера? Правильно, он равен null. Потому даже для юзанья виновых dll требуется строка сишная. Тобиш ваш пчар. И 90% процентов процессорного времени в паскалевской проге тратится на подобные никому не нужные проверки и преобразования.

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

Очень уважаю Паскаль за стройность, четкость и ясность. Однако ж С в не конкуренции :)

mezantrop
()

Re: Системное программирование в UNIX средствами FreePascal

s:=s+'1'; - красиво, просто и пожирает время микропроцессора: выделяет память, копирует старую строку, добавляет в конец символ, освобожает старую область памяти. За редкими исключениями так все и происходит. Резюме - не для системного программирования.

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

>Вы паскалевскую строку хоть раз видели? Указатель на строку нулевой длины чему равен? Адресу буффера? Правильно, он равен null. Потому даже для юзанья виновых dll требуется строка сишная. Тобиш ваш пчар. И 90% процентов процессорного времени в паскалевской проге тратится на подобные никому не нужные проверки и преобразования.

Длинные паскалевские строки совместимы с pchar. Адрес строки - указатель на область памяти, длина строки - 4 байта СЛЕВА от начала этой области.

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

у меня стоит toyota corolla ceres и я пишу на перле ;) а паскаль знаю.. иногда еще сниться в кошмарах - TURBO pascal!! haa

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

>>Длинные паскалевские строки совместимы с pchar. Адрес строки - указатель на область памяти, длина строки - 4 байта СЛЕВА от начала этой области.

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

anonymous
()

Re: Системное программирование в UNIX средствами FreePascal

> Вот когда я в универе учился, у нас говорили - паскаль язык студентов а C язык профессионалов.

Ты прислушиваешься ко всем глупостям, которые тебе говорят? Может, ты и учение Грабового распространяешь добровольно?

MAPA3MATuK
()

Re: Системное программирование в UNIX средствами FreePascal

Нечитабельностью кода. Очень сложно определить, к полям какого record-а идёт обращение, особенно когда всякие криволапые задницы пишут with на три страницы.

MAPA3MATuK
()

Re: Системное программирование в UNIX средствами FreePascal

> Делать больше нечего, чем заниматься системным программированием на паскале.

Не занимайся, найдутся те, кто востребует.

atrus ★★★★★
()

Re: Системное программирование в UNIX средствами FreePascal

function copyfile(name1, name2: string):integer;
var
infile, outfile: integer; (*─┼╙╦╥╔╨╘╧╥┘ ╞┴╩╠╧╫*)
nread: longint;
buffer: array [0..BUFSIZE-1] of byte; (*┬╒╞┼╥ ─╠╤ ▐╘┼╬╔╤/┌┴╨╔╙╔*)
begin

infile := fdopen (name1, Open_RDONLY);
if infile=-1 then
begin
copyfile:=-1; (*╧█╔┬╦┴ ╧╘╦╥┘╘╔╤ ╨┼╥╫╧╟╧ ╞┴╩╠┴*)
exit;
end;

outfile := fdopen (name2, Open_WRONLY or Open_CREAT or Open_TRUNC, octal(PERM));
if outfile=-1 then
begin
fdclose(infile);
copyfile:=-2; (*╧█╔┬╦┴ ╧╘╦╥┘╘╔╤ ╫╘╧╥╧╟╧ ╞┴╩╠┴*)
exit;
end;

(* ■╘┼╬╔┼ ╔┌ ╞┴╩╠┴ name1 ╨╧ BUFSIZE ╙╔═╫╧╠╧╫ *)
nread := fdread (infile, buffer, BUFSIZE);
while nread > 0 do
begin
(* ·┴╨╔╙┴╘╪ buffer ╫ ╫┘╚╧─╬╧╩ ╞┴╩╠. *)
if fdwrite (outfile, buffer, nread) < nread then
begin
fdclose (infile);
fdclose (outfile);
copyfile:=-3; (* ╧█╔┬╦┴ ┌┴╨╔╙╔ *)
exit;
end;
nread := fdread (infile, buffer, BUFSIZE);
end;

(*┌┴╦╥┘╫┴┼═ ╨╥╧▐╔╘┴╬╬┘┼ ╞┴╩╠┘*)
fdclose (infile);
fdclose (outfile);

if (nread = -1) then
copyfile := -4 (* ╧█╔┬╦┴ ╨╥╔ ╨╧╙╠┼─╬┼═ ▐╘┼╬╔╔ *)
else
copyfile := 0; (* ╫╙┼ ╨╧╥╤─╦┼ *)
end;

Если вот это "системное" программирование, то тогда я - конь в пальто.

Наверное в каком-нибудь perl это можно сделать на половине строки.

Sun-ch
()

Re: Системное программирование в UNIX средствами FreePascal

>Адрес строки - указатель на область памяти, длина строки - 4 байта СЛЕВА от начала этой области.

Мда. Паскаль жжот, однако. Мне такого в страшном сне не приснится...

Eldhenn
()

Re: Системное программирование в UNIX средствами FreePascal

Да нет, по хорошему в perl копирование файла делается так же как и в C, и так же, как написано в этом примере. Просто на C это лаконичнее выглядит. А на perl можно хорошо копировать файл с коротким текстовыми строками:

open F, "<file.from"; open G, ">file.to"; print G while (<F>);

Eldhenn
()

Re: Системное программирование в UNIX средствами FreePascal

Да нет, по хорошему в perl копирование файла делается так же как и в C, и так же, как написано в этом примере. Просто на C это лаконичнее выглядит. А на perl можно хорошо копировать файл с коротким текстовыми строками:

open F, "<file.from";
open G, ">file.to";
print G while (<F>);

Eldhenn
()

Re: Системное программирование в UNIX средствами FreePascal

"Заколачивание гвоздей средствами микроскопа", блин.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.