Телескопы покупают здесь


A A A A Автор Тема: Изучаю Паскаль. Присоединяйтесь.  (Прочитано 9881 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Витторио

  • *****
  • Сообщений: 840
  • Благодарностей: 158
    • Сообщения от Витторио
    • Мир глубокого космоса
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #20 : 18 Дек 2022 [01:46:22] »
Напишите так
fi1 := 1;
fi2 := 2;
for i := 1 to 50 do begin
    fib := fi1 + fi2;
    fi1 := fi2;
    fi2 := fib;
end
WriteLn(fib)
У меня аналогичный код числа Фиббоначи до 10000 да секунду считает.

Оффлайн Toth

  • *****
  • Сообщений: 2 581
  • Благодарностей: 174
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #21 : 18 Дек 2022 [02:27:33] »
Напишите так
Да, если в самом деле нужны числа Ф., то конечно.
Но у меня прога просто для расчета быстродействия, именно рекурсия , она не для практических целей.
Для практических целей есть формула Бине
function FiboBinet(n:Integer):Extended;
const PHI = 1.61803398874989;
begin
  FiboBinet:=(IntPower(PHI,n)-1/IntPower(-PHI,n))/(2*PHI-1);
end;
числа Фиббоначи до 10000
Ф_10000 = 3.36447648754238*10^2089

Оффлайн GraY25

  • *****
  • Сообщений: 5 882
  • Благодарностей: 1003
  • Дифракционный_беспредел [____ Сергей Иванов ____]
    • Сообщения от GraY25
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #22 : 18 Дек 2022 [04:11:01] »
Не то чтобы я агитировал.. но..)
Программа в современном питоне вполне может выполняться быстрее чем на С++)
Да и код в 2 раза короче.
Вот для примера тот же рекурсивный Фибоначчи 30-46:

• С14 HD [0.96] + HS F/1.9 @ CGE Pro
• С8 HD   [0.93] + HS F/2.1 @ ZWO AM5
• TS 152/900
Sun Hα  MoonAstroSeeing Bot

Оффлайн Toth

  • *****
  • Сообщений: 2 581
  • Благодарностей: 174
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #23 : 18 Дек 2022 [04:36:17] »
Программа в современном питоне вполне может выполняться быстрее чем на С++)
Ну, они же на разных компах, у меня такой -
Я эту на чисто Си делал, без ++
#include <stdio.h>
#include <time.h>

double Fibo(int n)
{
if (n==0) return 0; else
if (n==1) return 1; else return Fibo(n-1) + Fibo(n-2);
}

int main(int argc, char **argv)
{
double a;
int n;
clock_t start, end;
for (n = 33; n < 47; n++)
{
       start = clock();
   a = Fibo(n);
   end = clock();
   printf("%f\n",(double)(end - start) / (CLOCKS_PER_SEC));
     }
getchar();
return 0;
}

Оффлайн GraY25

  • *****
  • Сообщений: 5 882
  • Благодарностей: 1003
  • Дифракционный_беспредел [____ Сергей Иванов ____]
    • Сообщения от GraY25
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #24 : 18 Дек 2022 [04:46:42] »
Да я ж не с целью критики какого-то конкретного языка.
Я к тому что фактор скорости в принципе не актуален - на любом языке можно написать довольно быструю программу.
Если конечно специфика позволяет, - например драйвер устройства думаю придётся всё-таки писать на Си..)
• С14 HD [0.96] + HS F/1.9 @ CGE Pro
• С8 HD   [0.93] + HS F/2.1 @ ZWO AM5
• TS 152/900
Sun Hα  MoonAstroSeeing Bot

Оффлайн АурипигментАвтор темы

  • *****
  • Сообщений: 5 299
  • Благодарностей: 156
  • Ми пацаки с планеты Земля. А Ви кто?
    • Сообщения от Аурипигмент
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #25 : 18 Дек 2022 [09:34:14] »
Тут ещё такой скользкий момент. Данной программой мы тестируем производительность компа, или определяем только скорость кода, т.к. можем сравнить с работой кода сгенерированного с другого языка. Авторы из Паскаль АВС оговорились, что код может быть оптимизирован, или нет.
Когда меня учили считать на калькуляторе, то для оптимизации, например, предлагали вместо квадрата считать произведение числа на самого себя и куб то же заменять явным произведением, это звучит смешно, но функции на калькуляторе считаются через разложение в ряды, то бишь считается n-колличество членов ряда и находится их сумма, что приводит к большим временным затратам. Возведение в квадрат и куб очень популярные операции, если и на компе они считаются через ряды, то надо их всегда заменять на умножение. 8)
Нам тайны не раскрытые раскрыть пора,
Лежат без пользы тайны, как в копилке.
Мы тайны эти с корнем вырвем у ядра,
На волю пустим Джина из бутылки.

Оффлайн Toth

  • *****
  • Сообщений: 2 581
  • Благодарностей: 174
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #26 : 18 Дек 2022 [15:56:45] »
Когда меня учили считать на калькуляторе, то для оптимизации, например, предлагали вместо квадрата считать произведение числа на самого себя и куб то же заменять явным произведением, это звучит смешно, но функции на калькуляторе считаются через разложение в ряды, то бишь считается n-колличество членов ряда и находится их сумма, что приводит к большим временным затратам.
По разному бывает. Вообще, функцию квадрата Sqr стоит применять например
Sqr(Sin(x)) а не Sin(x)*Sin(x) , чтобы синус 2 раза не считать.
Это когда что-то в цикле, при однократном конечно все равно 1 наносекунда или 2 наносекунды.
Когда степенные ряды - метод Горнера можно использовать.

Проверил сейчас в Delphi и Geany, результаты разные, как и ожидал. В Delphi правда делал оконное, а не консольное, но это не должно сказаться на скорость. В данном случае. Разница видимо от разных компиляторов и настроек.
program perfSq;

uses  SysUtils,DateUtils,Math;

var i,N:Longint; // Integer у Geany маловат
    t0:TDateTime;
   x,f:Extended;
begin
 N:=1000000000;
 t0:=Now;
 for i:=1 to N do
  begin
   x:=i;   //  Чтобы умножались не целые, а действ.. Хотя для Pascal это наверное не надо
  // f:=x*x*x;   
   f:=IntPower(x,3);
  end;
 WriteLn((Now-t0)*86400/N);   // время на 1 цикл, сек
 ReadLn;
end.
Результат -

Оффлайн byFelix

  • Новичок
  • *
  • Сообщений: 23
  • Благодарностей: 2
  • Мне нравится этот форум!
    • Сообщения от byFelix
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #27 : 24 Дек 2022 [21:38:29] »
Если у кого есть желание изучить Паскаль, присоединяйтесь! :)
А кто знает Паскаль проходить мимо. Pascal ABCNet считаю для начинающих. Серьёзные проекты начинаются с IDE Delphi, Lazarus. Когда то за кого то писал курсовую по движению планет (IDE Delphi XE8), для демонстрации движения использовался OpenGL. В Pascal ABCNet такого не сделать. Хорошая тема, будем следить.
Arsenal 150/750, Arsenal 130/900

Оффлайн Бобр-99

  • *****
  • Сообщений: 2 367
  • Благодарностей: 44
    • Сообщения от Бобр-99
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #28 : 24 Дек 2022 [22:10:21] »
выбирал между Java и Python, начал с первого, в итоге остановился на последнем, т.к. в Java очень долгий срок вхождения, в Python гораздо быстрее можно получить готовый продукт да и для программирования в одиночку он больше приспособлен. По возможностям оба языка - на порядки круче Паскаля, у меня получалось реализовать любые свои желания.
На Яве работал. А какие возможности у Python?
2x54, 16x50
Доб 305 мм F/5
24/67, 14/72, 10/72, 6/100

Оффлайн Проходящий Кот

  • *****
  • Сообщений: 19 443
  • Благодарностей: 426
    • Сообщения от Проходящий Кот
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #29 : 24 Дек 2022 [22:10:56] »
Вопрос в том, насколько надо изучить Паскаль, прежде чем переходить к Дельфи.

Оффлайн Toth

  • *****
  • Сообщений: 2 581
  • Благодарностей: 174
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #30 : 24 Дек 2022 [22:17:00] »
насколько надо изучить Паскаль, прежде чем переходить к Дельфи
Да нинасколько. Дельфы - это просто IDE, довольно удобная.
Паскаль мне кажется лучше даже начинать изучать в Delphi или Lazarus (бесплатный), удобнее. Там и консольные приложения можно делать, не только оконные.

Оффлайн Valenock

  • *****
  • Сообщений: 5 208
  • Благодарностей: 167
    • Сообщения от Valenock
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #31 : 24 Дек 2022 [23:39:04] »
А какие возможности у Python?
Возможность создать программу весом в гигабайт, которая на паскале будет меньше мегабайта, а на ассемблере влезет в пару килобайтов.

Оффлайн Бобр-99

  • *****
  • Сообщений: 2 367
  • Благодарностей: 44
    • Сообщения от Бобр-99
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #32 : 25 Дек 2022 [00:57:01] »
Угу. Мой вопрос ехидный.
Если нужна простота, то какой простоты не хватает Паскалю? + эффективность.

Что нового вводит Питон? По какой причине на него надо переходить? Кроме той глубокоуважаемой причины о которой пишет сам автор - хочу быть богатым.

Вводит новые неприятности. Например табуляция. Программы на Питоне журналы публикуют в виде .pdf. Как вы думаете что с ними происходит?

Что Питон подразумевает под ООП? В описании два слова, словно это самой собой разумеющееся.

И т.д.
2x54, 16x50
Доб 305 мм F/5
24/67, 14/72, 10/72, 6/100

Оффлайн byFelix

  • Новичок
  • *
  • Сообщений: 23
  • Благодарностей: 2
  • Мне нравится этот форум!
    • Сообщения от byFelix
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #33 : 25 Дек 2022 [01:27:00] »
Кстати RegiStax тоже дельфийский продукт.
Arsenal 150/750, Arsenal 130/900

Оффлайн GraY25

  • *****
  • Сообщений: 5 882
  • Благодарностей: 1003
  • Дифракционный_беспредел [____ Сергей Иванов ____]
    • Сообщения от GraY25
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #34 : 26 Дек 2022 [13:00:52] »
Кстати RegiStax тоже дельфийский продукт.

На Дельфи там лишь интерфейс. Для обработки изображений он использует OpenCV библиотеки (С++)
• С14 HD [0.96] + HS F/1.9 @ CGE Pro
• С8 HD   [0.93] + HS F/2.1 @ ZWO AM5
• TS 152/900
Sun Hα  MoonAstroSeeing Bot

Оффлайн Toth

  • *****
  • Сообщений: 2 581
  • Благодарностей: 174
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #35 : 27 Дек 2022 [01:26:11] »
Вот например тут - https://celestrak.org/software/vallado-sw.php  исходники в т.ч. и на Паскаль, для всяких астрономических дел.
Я оттуда кое-что использовал, правда немного.
GGP4/SDP4 например , модель движения ИСЗ на основе TLE. До того написал из другого источника ( тупо фортрановский код на Паскаль переписывал), потом взял от т. D.  Vallado - у него получше.


Оффлайн Toth

  • *****
  • Сообщений: 2 581
  • Благодарностей: 174
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #36 : 27 Дек 2022 [02:11:24] »
Такой прикол с типами. Можно попасться, в зависимости от компилятора ( и настроек его наверное). У Geany и Lazarus компилятор один и тот же - fpc.
program untitled;

var i,n : LongInt;
   x:Double;
begin
 i:=1000000000;
 n:=1000000000;
 WriteLn('i= ',i,' n= ',n);
 x:=i*n;
 WriteLn(x);
 x:=i*n*1.0;
 WriteLn(x);
 x:=1.0*i*n;
 WriteLn(x);
 ReadLn;
end.

Оффлайн GraY25

  • *****
  • Сообщений: 5 882
  • Благодарностей: 1003
  • Дифракционный_беспредел [____ Сергей Иванов ____]
    • Сообщения от GraY25
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #37 : 27 Дек 2022 [10:54:29] »
Ну пример несколько "притянут за уши".
Зачем использовать такой короткий тип данных как LongInt (который по факту тот же 4х-байтный знаковый Integer) если планируется умножение огромных чисел.
int64 решает проблему.

И если на то пошло, Delphi это и IDE, и диалект языка.
В Free Pascal компиляторе fpc есть директива которая включает совместимость с ним.

Ну а если ещё глобальнее мыслить то (цитата из Вики)
Цитата
Ни одна из распространённых коммерческих реализаций Паскаля не соответствует в точности ни одному из официальных стандартов языка.
;D
• С14 HD [0.96] + HS F/1.9 @ CGE Pro
• С8 HD   [0.93] + HS F/2.1 @ ZWO AM5
• TS 152/900
Sun Hα  MoonAstroSeeing Bot

Оффлайн Toth

  • *****
  • Сообщений: 2 581
  • Благодарностей: 174
    • Сообщения от Toth
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #38 : 27 Дек 2022 [14:59:12] »
Зачем использовать такой короткий тип данных как LongInt (который по факту тот же 4х-байтный знаковый Integer) если планируется умножение огромных чисел.
Ну почему-же. Иногда в девой части - действ. переменная, а в правой - выражение, где среди прочих и целые перем. или константы.
И Integer не всегда 4-байтовый. В Delphi - да, а в Geany ( fps) - нет.

Оффлайн GraY25

  • *****
  • Сообщений: 5 882
  • Благодарностей: 1003
  • Дифракционный_беспредел [____ Сергей Иванов ____]
    • Сообщения от GraY25
Re: Изучаю Паскаль. Присоединяйтесь.
« Ответ #39 : 27 Дек 2022 [15:45:50] »
Ну с фри паскалем я не сталкивался..
Очевидно, его компилятор взял на себя смелость делать приведение типов.
Документация говорит что там есть множество целочисленных типов и они выбираются по необходимости (А "чистого" Integer нет).
https://wiki.freepascal.org/Integer#Free_Pascal_deviations

Если там есть какой-то аналог дельфийской функции VarType для проверки типа переменной в рантайме, можно узнать точнее.
Ну или как то косвенно, через "SizeOf".
« Последнее редактирование: 27 Дек 2022 [15:58:45] от GraY25 »
• С14 HD [0.96] + HS F/1.9 @ CGE Pro
• С8 HD   [0.93] + HS F/2.1 @ ZWO AM5
• TS 152/900
Sun Hα  MoonAstroSeeing Bot