LINUX.ORG.RU
ФорумTalks

А ты уже написал своего бота для Телеграма на Free Pascal'е, $username?

 , ,


2

1

Сабж. Ведь, уже существуют готовые библиотеки для этой задачи:
https://github.com/Al-Muhandis/brook-telegram
https://github.com/Al-Muhandis/fp-telegram
https://github.com/risoflora/brookfreepascal

★★★★★

Свободный первый уровень

А я помню любил турбу. Возможно уже не первый раз пишу про Delphi. Ах молодость

Shulman ()
Ответ на: комментарий от Zhbert

Ну турбы они все были «няшками» не только паскакаль :)

anc ★★★★★ ()

Третий проект — прикольный. Поставил галочку себе, спасибо.

Alden ★★ ()
Ответ на: комментарий от Shulman

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

i-rinat ★★★★★ ()
Ответ на: комментарий от EXL

я из 2019

Free Pascal тоже.

"@thezerobit 5 августа

Паскаль является недооцененной платформой программирования в 2019 году.
* Визуальное проектирование графических интерфейсов в IDE Lazarus
* Очень быстрая скорость компиляции и выполнения
* Объектная ориентированность, дженерики, юникод
* Нет пауз GC
* Безопаснее и умнее C/C++
* Free Pascal - это компилятор с сертификатом A+, поддерживает множество платформ" (c)

saahriktu ★★★★★ ()
Ответ на: комментарий от Deleted

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

saahriktu ★★★★★ ()
Ответ на: комментарий от Deleted

Ты про нативный вид? Ну он может использовать qt5, gtk2, и многое другое:

Win32/64 Interface - The winapi interface for Windows 95/98/Me/2K/XP/Vista, but not CE
Windows CE Interface - For Pocket PC and Smartphones
Carbon Interface - The Carbon interface for Mac OS X
Cocoa Interface - The Cocoa interface for Mac OS X
Qt Interface - The Qt4 interface for Unixes, Mac OS X, Windows, and Linux-based PDAs
Qt5 Interface - The Qt5 interface for Unixes, Mac OS X, Windows, and Linux-based PDAs
GTK1 Interface - The gtk1 interface for Unixes, Mac OS X (X11), Windows
GTK2 Interface - The gtk2 interface for Unixes, Mac OS X (X11), Windows
GTK3 Interface - The gtk3 interface for Unixes, Mac OS X (X11), Windows

Deleted ()
Ответ на: комментарий от saahriktu

Паскаль более высокоуровневый.

Как написать такое? Я код писал по фану так что на читабельность не смотри:

template <class T, class = typename std::enable_if<
  std::is_integral<typename T::value_type>::value>::type
> 
auto xor_iter1(const T& a, const T& b) 
{
    return ranges::views::zip(a,b) | ranges::views::for_each(
        [](std::pair<typename T::value_type, typename T::value_type> p) 
        { 
             return ranges::yield(p.second ^ p.first); 
        }
    );
}

Ну и в стандартных библиотеках много всего предусмотрено.

А какой в них смысл если у С++ библиотек тупо больше?

Например, можно даже возводить в нулевую степень

В плюсах тоже ж. И единица выйдет.

Deleted ()
Ответ на: комментарий от Deleted

Как написать такое?

Сначала объясни что это за нечитаемая наркоманска херота и что надо получить, тогда может и покажут как надо хехе, на паскале.

superuser ★★★ ()
Ответ на: комментарий от Deleted

GUI для современного свободного Паскаля обычно делается на LCL (Lazarus Component Library), которая дёргает WinAPI (в Винде), GTK+ или Qt (в Линуксах), Carbon на Маках. Также, ничто не мешает дёргать любую GUI библиотеку, не используя IDE. Я когда писал свои проги, они выглядели системно везде, где я пробовал ради интереса их запускать, даже в WinCE.

Alden ★★ ()
Ответ на: комментарий от superuser
template <class T, class = typename std::enable_if<
  std::is_integral<typename T::value_type>::value>::type
> 
// кароч принимается два аргумента: 
// Это два контейнера которые содержат integral тип (ну число кароч, интажер, long, чар итд) 
auto xor_iter1(const T& a, const T& b) 
{
    // zip([1,2,3], [4,5,6]) == [(1,4), (2, 5), (3, 6)]
    // for_each = ну я думаю ясно короч 
    return ranges::views::zip(a,b) | ranges::views::for_each(
        [](std::pair<typename T::value_type, typename T::value_type> p) 
        { 
             // yield ну эт про генераторы, думаю ясно
             return ranges::yield(p.second ^ p.first); 
        }
    );
}

// ваще тупой аналог этой функции
array<int> xor_iter(array<int> a, array<int> b) {
  array<int> out;
  for(int i = 0;i < a.size;i++) out[i] = a[i] ^ b[i];
  return out;
}
// но все работает не так 
Deleted ()
Ответ на: комментарий от Deleted

До Object Pascal'ей я пока ещё не успел добраться. Если бы код был написан в обычном структурном виде, то ещё, может быть, подсказал бы чего. А так надо ещё разбираться. Но шаблоны есть: https://wiki.freepascal.org/Templates .

А какой в них смысл если у С++ библиотек тупо больше?

Не всем и не всегда нужно больше.

В плюсах тоже ж. И единица выйдет.

Это где? glibc раньше такое не позволял.

saahriktu ★★★★★ ()
Ответ на: комментарий от Deleted

концепты

Там написано, что это дополнительные фичи шаблонов. Причём пока ещё экспериментальные даже для C++.

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

Ну когда слышишь шаблоны о другом думаешь, имхо. Фича это из C++20, у меня реализована без концептов.

Deleted ()
Ответ на: комментарий от Deleted

И лучше

Кому как.

Аналогов нет!

Это аналогов каких библиотек нет? Весь юниксвей есть в полном объёме: читаем и пишем файлы, дёргаем процессы,... Всё это позволяет во многих случаях обойтись без собственных низкоуровневых системных библиотек.

А для юзеров винды есть возможность рулить системой через реестр.

saahriktu ★★★★★ ()
Последнее исправление: saahriktu (всего исправлений: 2)
Ответ на: комментарий от saahriktu

Это аналогов каких библиотек нет?

WinAPI неполный, чуть в сторону от самого стандартного и тоже нету ниче, к примеру Assimp, FMOD, нормальных сетевых либ, leveldb, короче я как не захочу попробовать чет сделать, вечно облом %) Ну может я особенный, однако...

Deleted ()
Ответ на: комментарий от superuser

Эту функцию можно даже пометить constexpr, и все будет считаться на момент компиляции. Сложнее не значит тормознее, хотя я не плюсовик, возможно мой вариант плох.

Deleted ()

лучше бы свой нормальный проект начал

grem ★★★★★ ()
Ответ на: комментарий от Deleted

да я тоже пока не, как начну читать что там всё через костыли так азарт и пропадает

superuser ★★★ ()
Ответ на: комментарий от Deleted

Assimp

https://github.com/ev1313/Pascal-Assimp-Headers

FMOD

https://wiki.freepascal.org/Multimedia_Programming#FMOD

нормальных сетевых либ

Но при этом на Паскале пишут целые web-фреймворки, ага.

leveldb

Зато поддерживается куча других форматов БД.

saahriktu ★★★★★ ()
Ответ на: комментарий от Deleted

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

Реализации для других языков (например, BlitzMax, C#, Python), как правило, разрабатываются как часть проекта[2].

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

Первая ссылка на либу которая 5 лет не обновлялась и не содержит полный функционал.

Deleted ()
Ответ на: комментарий от Deleted

Какие проблемы с дёрганием любой из WinAPI функций? Даже если они не описаны в Windows.pas, заклинания вида

function GetCurrentProcessId:DWORD; external 'kernel32' name 'GetCurrentProcessId';   

всегда спасут отца русской демократии

Alden ★★ ()
Ответ на: комментарий от saahriktu

А чем, кстати, современный Паскаль безопасней C? В нём все возможности отстрелить ногу указателями и ручным управлением памятью присутствуют.

Alden ★★ ()
Ответ на: комментарий от Alden

Это да, но во многих других случаях всё равно получается гораздо безопаснее:

In general, the lower dependence on pointers for basic tasks makes it safer than C in practice.

The Extended Pascal standard extends Pascal to support many things C supports, which the original standard Pascal did not, in a type safer manner. For example, schema types support (besides other uses) variable-length arrays while keeping the type-safety of mandatory carrying the array dimension with the array, allowing automatic run-time checks for out-of-range indices also for dynamically sized arrays.

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

Так не одними динамическими массивами жив человек. Вот я заглянул в код того же PascalCoin, а там сплошь и рядом динамические списки из нетипизированных указателей и New() и Dispose().

Alden ★★ ()
Ответ на: комментарий от EXL

Кастовать типы можно, есть операция взятия адреса и нетипизированные указатели. Следовательно, от отморозков не спастись.

Alden ★★ ()
Ответ на: комментарий от Alden

Плох тот язык программирования, в котором нельзя выстрелить себе в ногу. Такая возможность быть должна. А безопасность языка должна относиться к другим вещам.

Поэтому, собственно, никто не говорит, что «Паскаль - это самый безопасный язык программирования, безопаснее просто не бывает», а говорят, что «Паскаль безопаснее чем C/C++». Разница таки есть.

saahriktu ★★★★★ ()
Ответ на: комментарий от Deleted

Как написать такое?

ударить кулаком по клаве и получить комбинации различных символов, букв, разделенных пробелами, переводом строк, скобочками

ты наверное хотел написать

void *memxor(void *restrict dest, const void *restrict src, size_t n) {
  const char *s = src;
  char *d = dest;

  for (; n > 0; n--) *d++ ^= *s++;
  return dest;
}
но страдаешь/кайфуешь от С++филиса?

reprimand ★★★★★ ()
Последнее исправление: reprimand (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)