С чего начать ?

Общие вопросы программирования, алгоритмы и т.п.

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

С чего начать ?

Сообщение toxin » 10.10.2008 00:59:42

Приветствую форумчан !
Я (если можно так сказать начинающий програмист) вообщем очередной самоучка, знаю php и java на достаточном уровне для себя, сейчас решил попробвать себя в програмировании программ, знакомые посоветовали pascal, говорят что этот язык програмирования не очень сложен и для новичка пайдет =)
так это или не я канешн незнаю
вообщем хотел узнать
1.С чего начать ?
2.Литература ?
3.Исходники ?
4.Есть ли, визуализаторы програмирования оболочек прграмм на pascal'e ?
5.Сколько читал, но до сих пор так и непонял что такое FPC




Буду очень благодарен тем кто мне сможет хоть чемто помочь
Всем спасибо, с Ув. toxin
toxin
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.10.2008 00:39:59

Re: С чего начать ?

Сообщение Andreich » 10.10.2008 08:50:15

1. Начни с того, что скачай сам компилятор и IDE. (http://www.freepascal.org)
2. Подойдет практически любая книга про классическому Pascal'ю.
3. см. пунк (2) + можешь посмотреть на http://www.sources.ru
4. Да есть,.. Возможны варианты в зависимости от используемой операционной системы, но например Lazarus работает везде! :)
5. FPC - Free Pascal Compiler
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Re: С чего начать ?

Сообщение Vadim » 10.10.2008 09:06:06

toxin
Лучше всего скачать IDE и компилятор в одном флаконе: ftp://ftp.freepascal.org/pub/lazarus/. Там где в названии присутствуют Lazarus и fpc одновременно, вот то и качайте. Так же смотрите, они там для разных ОС - win, win64, linux, linux64. Это всё в названии.
IDE Lazarus в очень большой степени похожа на Delphi 2..7, так что для обучения можно пользоваться книжками по Delphi. Различие в наборе компонент и некоторых тонкостях программирования, которые новичков обычно не колышут.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: С чего начать ?

Сообщение toxin » 10.10.2008 10:24:47

Vadim, Andreich
Спасибо !

Vadim писал(а):IDE Lazarus в очень большой степени похожа на Delphi 2..7

На многих сайтах где есть исходники языки delphiи pascal в одной неразделимой категории, почему ?
-они сильно пахожи ?
-а может сразу начать изучение delphi ?

pascal называют языком высшего уровня, так же и называют С/С++
Но поверхностное изучение обоих языков дало впечатление что pascal слабее чем C/C++
Это так ?
Или необходимо вникнуть в тонкости pascal'а что бы ценить его ?
toxin
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.10.2008 00:39:59

Re: С чего начать ?

Сообщение Alexx2000 » 10.10.2008 10:48:04

toxin писал(а):На многих сайтах где есть исходники языки delphiи pascal в одной неразделимой категории, почему ?
-они сильно пахожи ?

Delphi это продолжение развития Borland Pascal.
-а может сразу начать изучение delphi ?

Можно, конечно. Хотя в учебных заведениях обычно начинают с Паскаля, типа для лучшего понимания основ языка.
pascal называют языком высшего уровня, так же и называют С/С++
Но поверхностное изучение обоих языков дало впечатление что pascal слабее чем C/C++
Это так ?


ИМХО, я так не думаю, (если вы конечно не собираетесь писать драйвера и что-то в этом роде). Хотя у нас тут и ОС пишут на паскале.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 488
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: С чего начать ?

Сообщение toxin » 10.10.2008 10:54:36

Alexx2000 спасибо за пояснения
Alexx2000 писал(а):(если вы конечно не собираетесь писать драйвера и что-то в этом роде)

Думаю до драйверов дело дайдет нескоро, а может и вообще недойдет))


Можете посоветовать литературу по pascal'ю ???

Для преобразования исходного текста программы файла *.pas
Нужен компилятор который переведя инструкции выдаст *.exe'шник,
НО я уже немного вкурсе что есть декомпилятор, ну первое представление
Что декомпилятор должен переводить *.exe'шник к исходному коду, такие декомпиляторы для pascal'я есть ?
И если есть то как можно защитить програму от декомпиляции ?
toxin
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.10.2008 00:39:59

Re: С чего начать ?

Сообщение Vadim » 10.10.2008 11:29:36

toxin писал(а):-они сильно пахожи ?

Delphi - усовершенствованный вариант Паскаля. Условно говоря, Паскаль предоставляет Вам кирпичи, раствор, деревянные брусья, шифер, стекло, чтобы Вы из этого можгли сами себе построить дом какой хотите. В Дельфи дополнительно введены некие унифицированные блоки ускоряющие строительство - панели с окнами и дверями, клозеты, набранная крыша с рамами и уложенным шифером. Т.е. набор готовых блоков из тех же строительных материалов. Lazarus Вам предоставляет такие-же унифицированные блоки, что и Дельфи, только поскромнее ассортиментом.
Вот Вам пример создания окна с кнопкой на чистом Паскале:
Код: Выделить всё
program my_prog;
uses windows;

const
{ names of window classes. }
   WND_CLASS_NAME0 = 'my_wnd_class_name_0';
{ identifiers. }
   IDC_BUTTON0 = 2000;

{ function prototypes }
function wnd_proc0(window: HWND; message: UINT; w_param: WPARAM; l_param: LPARAM): LRESULT; stdcall; forward; export;
function create_wnd0: HWND; forward;
procedure create_wnd_content0(parent: HWND); forward;

{ global data }
var instance: longint;  { HINSTANCE }
    h_font: HFONT;

{ window procedure #0 [window] }
function wnd_proc0(window: HWND; message: UINT; w_param: WPARAM; l_param: LPARAM): LRESULT; stdcall; export;
begin
   case message of
   WM_COMMAND:
      begin
         case LOWORD(w_param) of
         IDC_BUTTON0:    { button 'button' }
            begin
               MessageBox(window, 'the button IDC_BUTTON0 is clicked.', 'Event', MB_OK or MB_ICONINFORMATION);
            end;
         end;
      end;
   WM_CREATE:
      begin
         create_wnd_content0(window);
      end;

   WM_CLOSE:
      begin
         if IDYES = MessageBox(window, 'Quit?', 'Event', MB_YESNO or MB_ICONQUESTION) then DestroyWindow(window);
      end;

   WM_DESTROY:
      begin
         PostQuitMessage(0);   { PostQuitMessage(return_code) quits the message loop }
      end;
   else
      begin
         wnd_proc0 := DefWindowProc(window, message, w_param, l_param);
         exit;
      end;
   end;
   wnd_proc0 := 0;
end;

{ create window #0 [window]. }
function create_wnd0: HWND;
var
   wnd: HWND;
begin
   wnd := CreateWindowEx($00000100, WND_CLASS_NAME0, 'window', $14CF0000, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, 0, 0, instance, nil);
   ShowWindow(wnd, SW_SHOWNORMAL);
   UpdateWindow(wnd);
   create_wnd0 := wnd;
end;

{ create window content #0 [window]. }
procedure create_wnd_content0(parent: HWND);
var
   wnd: HWND;
begin
   wnd := CreateWindowEx($00000000, 'Button', 'button', $50012F00, 136, 184, 96, 32, parent, HMENU(IDC_BUTTON0), instance, nil);
   SendMessage(wnd, WM_SETFONT, WPARAM(h_font), 1);
end;

procedure register_classes;
var wc: WNDCLASS;
begin
   wc.cbClsExtra    := 0;
   wc.cbWndExtra    := 0;
   wc.hbrBackground := HBRUSH(COLOR_3DFACE + 1);
   wc.hCursor       := LoadCursor(0, IDC_ARROW);
   wc.hIcon         := LoadIcon(0, IDI_APPLICATION);
   wc.hInstance     := instance;
   wc.lpszMenuName  := nil;
   wc.style         := CS_PARENTDC or CS_DBLCLKS;

   wc.lpfnWndProc   := @wnd_proc0;
   wc.lpszClassName := WND_CLASS_NAME0;

   RegisterClass(@wc);
end;

{ message loop }
function message_loop: integer;
var message: MSG;
begin
   while GetMessage(@message, 0, 0, 0) do
      begin
         TranslateMessage(@message);
         DispatchMessage(@message);
      end;
   message_loop := message.wParam;
end;

BEGIN
   instance := GetModuleHandle(nil);
   register_classes;
   h_font := CreateFont(-13, 0, 0, 0, FW_NORMAL, 0,
            0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
            DEFAULT_QUALITY, DEFAULT_PITCH or FF_DONTCARE, 'Times New Roman');
   create_wnd0;
   message_loop();
END.

Программа ничего толкового не делает, только выдаёт сообщение на нажатие кнопки.
А вот тоже самое с помощью Lazarus:
Главный файл:
Код: Выделить всё
program project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms
  { you can add units after this }, Unit1;

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Файл описания окошка:
Код: Выделить всё
object Form1: TForm1
  Left = 290
  Height = 300
  Top = 175
  Width = 400
  Caption = 'Form1'
  ClientHeight = 300
  ClientWidth = 400
  LCLVersion = '0.9.25'
  object Button1: TButton
    Left = 160
    Height = 25
    Top = 201
    Width = 75
    Caption = 'Button1'
    OnClick = Button1Click
    TabOrder = 0
  end
end

Файл ресурсов окошка:
Код: Выделить всё
{ Это - файл ресурсов, автоматически созданный lazarus }

LazarusResources.Add('TForm1','FORMDATA',[
  'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'"'#1#6'Height'#3','#1#3'Top'#3#175#0#5'Wi'
  +'dth'#3#144#1#7'Caption'#6#5'Form1'#12'ClientHeight'#3','#1#11'ClientWidth'#3
  +#144#1#10'LCLVersion'#6#6'0.9.25'#0#7'TButton'#7'Button1'#4'Left'#3#160#0#6
  +'Height'#2#25#3'Top'#3#201#0#5'Width'#2'K'#7'Caption'#6#7'Button1'#7'OnClick'
  +#7#12'Button1Click'#8'TabOrder'#2#0#0#0#0
]);

И самый нужный для программиста файл, в котором он пишет собственный код:
Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Ага! Попался!!!');
end;

initialization
  {$I unit1.lrs}

end.

Первые три файла создаются автоматически Lazarus'ом, последний создаётся полуавтоматом, т.е. туда Lazarus'ом вставляются шаблоны функций, например на нажатие кнопки:
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
 
end;

а вот то, что должно быть в функции пишет сам программист.
Итак, главное отличие - в Паскале всё, от первого до последнего символа, пишет сам программист вручную, а вот Lazarus (Delphi) добрую половину работы (например по созданию окошек с кнопками) делает автоматически.
toxin писал(а):Но поверхностное изучение обоих языков дало впечатление что pascal слабее чем C/C++
Это так ?

Нет, не так. Просто некоторые вещи в Си и Паскале делаются несколько по разному. Но в подавляющем большинстве случаев прикладного программирования эти языки полностью взаимозаменяемые.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: С чего начать ?

Сообщение toxin » 10.10.2008 11:38:22

Lazarus
ориентирован только на delphi ?
Или как я понимаю в Lazarus'е можно писать и pascal код ?
toxin
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.10.2008 00:39:59

Re: С чего начать ?

Сообщение bw » 10.10.2008 11:55:39

> Delphi это продолжение развития Borland Pascal.
> Delphi - усовершенствованный вариант Паскаля.
Вы оба не правы, это торговая марка, брэнд :-).

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

> Вот Вам пример создания окна с кнопкой на чистом Паскале
Да что за дурацкий термин "чистый паскаль", откуда ты его выкопал, запудришь сейчас человеку голову. Этот код будет работать и на Delphi и на FreePascal и на любом (или пости любом) другом компиляторе паскаля. Pascal (или Object Pascal) это язык, Delphi - это продукт некой компании, который несет в себе компилятор со своими особенностями понимания паскаля, IDE, набор модулей (VCL и т.д.) и другой софт облегчающий жизнь программисту. FreePascal - это другой проект, со своим компилятором со своим пониманием паскаля, со своей средой, со своим набором модулей. Оба эти компиляторы совместины на 95% (на глазок), так что не имеет принципиальной разницы, в этом смысле, чем пользоваться. Выбор компилятора тебе никак не помешает в изучении языка.

> Но поверхностное изучение обоих языков дало впечатление что pascal слабее чем C/C++
Этот термин не применим к языкам программирования. Что слабее PHP или Java? Каждый из этих инструментов используется в свой области. C, пожалуй, более гибкий инструмент (и более низкоуровневый) чем Pascal, но он так же является благодатнейшей почвой для создания ошибок в коде (это моё личное мнение).

> Или как я понимаю в Lazarus'е можно писать и pascal код ?
По аналогии с Delphi. Это среда, это набор модулей, это не язык программирования. В качестве компилятора используется FreePascal.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: С чего начать ?

Сообщение Vadim » 10.10.2008 12:29:17

bw писал(а):Да что за дурацкий термин "чистый паскаль", откуда ты его выкопал, запудришь сейчас человеку голову. Этот код будет работать и на Delphi и на FreePascal и на любом (или пости любом) другом компиляторе паскаля.

Ты давай сам человеку мозги не парь! Паскаль он и в Африке Паскаль, вне зависимости от "брэнда" (твой термин) - Delphi, FreePascal... И где взял, туда и положу. Пока что здесь ты один человека путаешь.

Добавлено спустя 21 минуту 19 секунд:
bw
Чтобы у тебя не было соблазнов провозглашать себя единственным источником правоты, прочитай цитату с сайта www.codegear.ru:
"Delphi is your solution for rapidly building high performance Windows applications
Delphi® is the premier development environment for software developers and database application developers who need to rapidly deliver high performance and easy to maintain software applications. Use the powerful Delphi IDE with its visual design surface, extensive component universe and powerful heterogeneous database framework to visually design and deliver applications in a fraction of the time. The powerful Delphi language and compiler deliver high performance and access to all the power and speed of native Windows development. Delphi also provides a comprehensive set of editing, refactoring, and debugging tools in a complete solution focused on making development faster and easier.
"
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: С чего начать ?

Сообщение bw » 10.10.2008 13:34:00

Безусловно производители Delphi будут говорить что Delphi это вершина человеческой мысли, что это ВСЕ. Новый, совершенно уникальный язык, лучшая в мире среда программирования и прочая лапша. Но я предпочитаю руководствоваться здравым смыслом. Delphi это просто среда, это просто набор модулей, это просто компилятор ПАСКАЛЯ со своими особенностями. Это как сравнивать GCC и MSVC, например. MSVC это язык? Нет, это среда и компилятор (конечно чуть больше, но не суть). Но MSVC превносит свои дополнения в язык C/C++ что не позволяет на 100% код, расчитанный на компиляцию в MSVC собрать и в GCC. Так же и с Delphi, FreePascal, PascalPro VirtualPascal и т.д. Кто просто компилятор, кто-то еще и линковщик, кто-то вносит свои дополнения к языку, какой-то продукт расширен IDE, модулями и т.д.

p.s. Ладно. К чему этот спор. Я никому ничего доказывать не буду. Я высказал свою точку зрению, не больше.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: С чего начать ?

Сообщение toxin » 10.10.2008 14:24:52

Вообщем на данный момент представления такие

Нужен компилятор !?
Вооружился Turbo Pascal 7.0
+ скачал Pascal ABC (думаю пригодится)

Нужна литература !?
Нашел краткое и понятное изложение языка Pascal (в процессе чтения)

Исходники
Ну естественный разбор исходников на pascal'e


Попрежнему путаница в голове с delphi и pascal'em,
немогу понять в чем разница :oops: исходники что на delphi что на pascal'e все в одной категории как различить,
мне пока непонятно



А так всем большое спасибо ! =)
toxin
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.10.2008 00:39:59

Re: С чего начать ?

Сообщение Andreich » 10.10.2008 21:51:39

toxin писал(а):исходники что на delphi что на pascal'e все в одной категории как различить


Умение различать код со временем обязательно появится,...
Возможно меня поправят, но если говорить совсем просто, то Lazarus (Delphi) - это инструменты именно для объектно-ориентированного программирования. Поэтому код на Delphi легко отличим по наличию в нем свойств, методов и прочих подобных вещей. Т.е. если ты вдруг увидел конструкцию типа Form1.Label1.Caption:='text'; то можешь быть уверен, что это Delphi!
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Re: С чего начать ?

Сообщение GN » 11.10.2008 10:25:27

toxin, вот ru.wikipedia.org/wiki/Delphi_(язык_программирования) почитай...
Аватара пользователя
GN
новенький
 
Сообщения: 67
Зарегистрирован: 29.07.2007 07:35:56
Откуда: Казахстан

Re: С чего начать ?

Сообщение toxin » 11.10.2008 14:57:53

GN писал(а):вот ru.wikipedia.org/wiki/Delphi_(язык_программирования) почитай...


Все хорошо обойдусь пока класическим pascal'ем

Добавлено спустя 51 секунду:
Да может у каво есть архивы исходников на паскале, а то пака различать код не сильно получаетсо =(
toxin
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.10.2008 00:39:59

След.

Вернуться в Общее

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

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

Рейтинг@Mail.ru