Язык программирования PureBasic

Любые обсуждения, не нарушающие правил форума.

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

Re: Язык программирования PureBasic

Сообщение trink » 10.04.2014 12:32:29

Vadim писал(а):если уж речь пошла о миграции на Basic, то есть ведь и свободные альтернативы, например FreeBasic. Он пока что только для i386, но код при переносе с винды на линукс переделывать не приходится.
Переделывать приходится.
У FreeBasic в отличие от PureBasic, почти нет кроссплатформенных функций. Даже гуй приходится создавать напрямую юзая функции ОС. Надеюсь что понимаете что в Linux нет win api?
А в PureBasic больше 1400 кроссплатформенных функций, в т. ч. для создания и работы с GUI, базами данных, 2D 3D, и т. д. На скрине в первом посте темы, видно создание окна используя кроссплавтформпнные функции. Этот код компилируется под все платформы без его модификации.
В добавок в FreeBasic даже отладчика нет. Короче с PureBasic он не сравнится по возможностям и функционалу.
trink
незнакомец
 
Сообщения: 9
Зарегистрирован: 08.04.2014 21:17:43

Re: Язык программирования PureBasic

Сообщение Лекс Айрин » 10.04.2014 12:56:04

trink писал(а):Надеюсь что понимаете что в Linux нет win api?


Можно ведь и "пьяным" запустить. :wink: А если серьезно, то кроссплатформенность можно добавить позднее, если будет необходимо. Видимо, пока такой необходимости нет.

trink писал(а):В добавок в FreeBasic даже отладчика нет. Короче с PureBasic он не сравнится по возможностям и функционалу.

Знаете, некоторые не пользуются отладчиками. Есть и другие методы отладки.
Последний раз редактировалось Лекс Айрин 10.04.2014 14:16:22, всего редактировалось 1 раз.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Язык программирования PureBasic

Сообщение Vadim » 10.04.2014 14:08:07

trink писал(а):Надеюсь что понимаете что в Linux нет win api?

Да что Вы??????? Вот это новость... :-D
А зачем Вам winapi в Linux? Сударь знает толк в извращениях? ;-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Язык программирования PureBasic

Сообщение hinst » 10.04.2014 14:53:59

вы ведь понимаете что Linux - DNIWE E6AHOE
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Язык программирования PureBasic

Сообщение vada » 10.04.2014 15:33:23

Вы делаете мне смешно. :)
Вполне адекватный цикл обработки событий. Только тут мало обрабатывается событий, точнее одно. В прогах по сложнее их больше.

Адекватный; Вечный цикл с пожиранием ресурсов это АДЕКВАТНО?
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Язык программирования PureBasic

Сообщение trink » 10.04.2014 16:14:19

Лекс Айрин писал(а): А если серьезно, то кроссплатформенность можно добавить позднее, если будет необходимо. Видимо, пока такой необходимости нет.
Лекс Айрин писал(а):Знаете, некоторые не пользуются отладчиками.
Это вы типа из недостатков сделали фичи? :D Наверное умеете хорошо впаривать лохам кривые и бажные программы, выдавая их кривизну и баги за достоинства? :D

Vadim писал(а):А зачем Вам winapi в Linux? Сударь знает толк в извращениях?
А вы сударь не внимательно читаете. Речь шла об отсутствии кроссплатформенных функций в FreeBasic.

vada писал(а):Адекватный; Вечный цикл с пожиранием ресурсов это АДЕКВАТНО?
Если прочитаете справку на функцию WaitWindowEvent(), то станет понятно что это не так. Слово Wait намекает что функция ожидает события и во время этого ожидания, проц не грузится. Загрузка проца близка к 0 %.
trink
незнакомец
 
Сообщения: 9
Зарегистрирован: 08.04.2014 21:17:43

Re: Язык программирования PureBasic

Сообщение скалогрыз » 10.04.2014 16:18:23

Vadim писал(а):А зачем Вам winapi в Linux? Сударь знает толк в извращениях? ;-)

тут надо заметить, что LCL в некоторой степени и есть эмуляция "winapi в Linux". знают толк в извращениях! :mrgreen:
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Язык программирования PureBasic

Сообщение Лекс Айрин » 10.04.2014 17:31:51

trink писал(а):Это вы типа из недостатков сделали фичи?


Даже не пытался.

trink писал(а):Наверное умеете хорошо впаривать лохам кривые и бажные программы, выдавая их кривизну и баги за достоинства?


Знаете, в моей "бажной" проге еще никто, кроме меня, ошибок не нашел. Несмотря на то, что я не пользуюсь отладчиком. Он просто мне не нужен. Во-первых, не тот размер, во- вторых, предпочитаю проверять каждую ветвь алгоритма на глючность по мере написания. Кроме этого, пользуюсь тестовыми выхлопами.

Вот если ты у меня были километровые исходники, да еще и со многими зависимостями...тогда да, отладчик желателен.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Язык программирования PureBasic

Сообщение vada » 10.04.2014 17:36:55

Загрузка проца близка к 0 %.

Чушь!
Уже само repeat until с пустотой внутри хавает одно ядро на 50%! Если без оптимизации которая выбросит этот цикл. А если вы в цикле наличие события проверяете. Тут вообще пипец! А если вы на ожидании события отдаете управление планировщику, так это лютый костыль, и цикл вообще не в тему.
Реликты досовской монопольщины :)
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Язык программирования PureBasic

Сообщение Vadim » 10.04.2014 17:56:08

trink писал(а):А вы сударь не внимательно читаете. Речь шла об отсутствии кроссплатформенных функций в FreeBasic.

В таком случае Вы, сударь, незнакомы с этими самыми кроссплатформенными функциями. Вот я, например, если вижу, что одна и та же функция выполняется и в винде и в линуксе, считаю её кроссплатформенной. Причём эту функцию писал не я. а разработчики FreeBasic. Вы с моим мнением, конечно же, категорически не согласны только потому, что рекламируете здесь конкурирующий с FreeBasic продукт? ;-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Язык программирования PureBasic

Сообщение trink » 10.04.2014 19:07:17

vada писал(а):Чушь!
Уже само repeat until с пустотой внутри хавает одно ядро на 50%!
Разве цикл пуст?
Функцию WaitWindowEvent() не замечаете в нем?
Но раз не верите, качайте PureBasic и запускайте в нем этот код.
Код: Выделить всё
OpenWindow(0, 0, 0, 120, 50, "Демо",  #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered )
TextGadget(0, 10, 16, 100, 16,"Привет мир", #PB_Text_Center)
Repeat
   Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
После чего соглашаетесь что загрузка процессора действительно 0 %.

Vadim писал(а):В таком случае Вы, сударь, незнакомы с этими самыми кроссплатформенными функциями. Вот я, например, если вижу, что одна и та же функция выполняется и в винде и в линуксе, считаю её кроссплатформенной.
Тему вообще читали?
Прочитайте внимательно. viewtopic.php?p=80942#p80942
Да в FreeBasic есть несколько десятков кроссплатформенных функций. Это работа со строками, файлами, консолью и памятью. А вот многих других, таких как работа с GUI, сетью, звуком, базами данных и т. д. в FreeBasic нет. Из-за этого в большинстве случаев, нужно переписывать код при переносе с винды на линукс и наоборот.
trink
незнакомец
 
Сообщения: 9
Зарегистрирован: 08.04.2014 21:17:43

Re: Язык программирования PureBasic

Сообщение Vadim » 11.04.2014 02:52:50

trink писал(а):Тему вообще читали?

Да. И вижу, что Вы тут рекламируете коммерческий продукт.
trink писал(а):А вот многих других, таких как работа с GUI, сетью, звуком, базами данных и т. д. в FreeBasic нет.

Врёте. Вы этим вопросом не владеете, а врёте. Стыдитесь. ;-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Язык программирования PureBasic

Сообщение vada » 11.04.2014 11:38:43

Но раз не верите, качайте PureBasic и запускайте в нем этот код.

Сейчас все брошу и буду этой чушью заниматься. Ага.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Язык программирования PureBasic

Сообщение Лекс Айрин » 11.04.2014 12:38:07

KwikGUI (680 кб) - Кроссплатформенная библиотека для создания GUI. Неплохо выполнены основные используемые в разработке контролы. В архиве исходные коды библиотеки и примеры.


Код: Выделить всё
[quote]sGUI (1.42 мб) - Кроссплатформенная библиотека для создания GUI интефейса. Все сделано очень хорошо и стильно. Единственно плохо: нет выделения текста в редакторе, однако проект в разработке.
Cryptlib (1.86 мб) - Кроссплатформенная криптографическая библиотека. В архиве все необходимое, включая документацию на английском. [/quote]

[quote]IUP (7.86 мб) - Отличная кроссплатформенная библиотека для создания GUI интерфейса. Поддерживает три языка (LUA, LED , C , а значит и FreeBasic) Разработка с помощью ее довольно проста и удобна. Содержит все известные контролы, меню , диалоги и пр. Единственно я не увидел ToolBar , но зато есть CANVAS , MATRIX , GLCANVAS, и др. Размер конечного файла при использовании статических библиотек от 350 кб (естественно при таком способе более никаких дополнительных DLL не требуется). Есть правда исключение: примеры (например WebBrowser) , которые работают только с использованием DLL. Возможно расширение возможностей за счет WINAPI и GTK. Хорошая справочная составляющая. Библиотека постоянно развивается, последний релиз был в июне 2012 года. Адаптировал заголовки и примеры под FreeBasic - D.J.Peters.[/quote]

[quote]CURL (1.36 мб) - Свободная кроссплатформенная библиотека для передачи данных по URL, она поддерживает DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET и TFTP. Также curl имеет поддержку SSL сертификатов, HTTP POST, HTTP PUT, FTP загрузку, HTTP form загрузку, proxy, cookies, user+password авторизацию (Basic, Digest, NTLM, Negotiate, Kerberos), докачивания файлов, http прокси туннелирования и многого другого! [/quote]

[quote]GLFW (492 кб) - кроссплатформенная библиотека для создания окна с контекстом OpenGL и управления вводом и событий. Она имеет простой API , легко интегрируется в существующие приложения, поддерживает Unicode.[/quote]

[quote]Hunspell (891 кб) - кроссплатформенная библиотека с открытым исходным кодом, предназначенная для проверки орфографии. Используется для языков со сложной системой словообразования и обширной морфологией. Может использовать языковые файлы в форматах ASCII и Unicode.[/quote]

Исходники можете посмотреть сами. free-basic.ru/download.html
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Язык программирования PureBasic

Сообщение Vadim » 11.04.2014 17:44:31

trink
Рекламные агенты, такие ка Вы, всегда прибегают к тому, к чему прибегли Вы.
Я ведь сказал Вам, что вопросом Вы не владеете, тем не менее Вы решились ещё раз продемонстрировать всем на этом форме, свою ПОЛНУЮ неосведомлённость.
Заранее предполагая, что такой хитроумный рекламщик комерческих продуктов, вроде Вас, будет обязательно придираться к вышеприведённому примеру Вашей полной неосведомлённости в данном вопросе, я просто приведу пример, который идёт в составе СТАНДАРТНОЙ поставки FreeBasic и не пользуются модулями написанными сторонними программистами:
Код: Выделить всё
''
'' simple http-get example for both Windows and Linux
''

#ifdef __FB_WIN32__
#include once "win/winsock2.bi"
#else
#include once "crt/netdb.bi"
#include once "crt/sys/socket.bi"
#include once "crt/netinet/in.bi"
#include once "crt/arpa/inet.bi"
#include once "crt/unistd.bi"
#endif

const RECVBUFFLEN = 8192
const NEWLINE = !"rn"
const DEFAULT_HOST = "www.freebasic.net"

declare sub doInit( )
declare sub doShutdown( )
declare sub getHostAndPath _
   ( _
      byref src as string, _
      byref hostname as string, _
      byref path as string _
   )
declare function resolveHost( byref hostname as string ) as integer
declare sub reportError( byref msg as string )

   dim hostname as string
   dim path as string

   doInit( )

   '' check command-line
   getHostAndPath( command( ), hostname, path )
   if( len( hostname ) = 0 ) then
      hostname = DEFAULT_HOST
   end if

   '' resolve name
   dim ip as integer
   dim s as SOCKET

   ip = resolveHost( hostname )
   if( ip = 0 ) then
      print "resolveHost(): invalid address"
      end 1
   end if

   '' open socket
   s = opensocket( AF_INET, SOCK_STREAM, IPPROTO_TCP )
   if( s = 0 ) then
      reportError( "socket()" )
      end 1
   end if

   '' connect to host
   dim sa as sockaddr_in
   sa.sin_port        = htons( 80 )
   sa.sin_family      = AF_INET
   sa.sin_addr.S_addr = ip

   if( connect( s, cast( PSOCKADDR, @sa ), sizeof( sa ) ) = SOCKET_ERROR ) then
      reportError( "connect()" )
      closesocket( s )
      end 1
   end if

   '' send HTTP request
   dim sendbuffer as string
   sendBuffer = "GET /" + path + " HTTP/1.0" + NEWLINE + _
                "Host: " + hostname + NEWLINE + _
                "Connection: close" + NEWLINE + _
                "User-Agent: GetHTTP 0.0" + NEWLINE + _
                NEWLINE

   if( send( s, sendBuffer, len( sendBuffer ), 0 ) = SOCKET_ERROR ) then
      reportError( "send()" )
      closesocket( s )
      end 1
   end if

   '' receive until connection is closed
   dim recvbuffer as zstring * RECVBUFFLEN+1
   dim bytes as integer

   do
      bytes = recv( s, recvBuffer, RECVBUFFLEN, 0 )
      if( bytes <= 0 ) then
         exit do
      end if

      '' add the null-terminator
      recvbuffer[bytes] = 0

      '' print buffer as a string
      print recvbuffer
   loop

   print

   '' close socket
   shutdown( s, 2 )
   closesocket( s )

   doShutdown( )

sub getHostAndPath _
   ( _
      byref src as string, _
      byref hostname as string, _
      byref path as string _
   )

   dim p as integer = instr( src, " " )
   if( p = 0 or p = len( src ) ) then
      hostname = trim( src )
      path = ""
   else
      hostname = trim( left( src, p-1 ) )
      path = trim( mid( src, p+1 ) )
   end if

end sub

function resolveHost( byref hostname as string ) as integer

   dim ia as in_addr
   dim hostentry as hostent ptr

   '' check if it's an ip address
   ia.S_addr = inet_addr( hostname )
   if ( ia.S_addr = INADDR_NONE ) then
      
      '' if not, assume it's a name, resolve it
      hostentry = gethostbyname( hostname )
      if ( hostentry = 0 ) then
         exit function
      end if
      
      function = *cast( integer ptr, *hostentry->h_addr_list )
   else
      '' just return the address
      function = ia.S_addr
   end if

end function

sub reportError( byref msg as string )
#ifdef __FB_WIN32__
   print msg; ": error #" & WSAGetLastError( )
#else
   perror( msg )
#endif
end sub

sub doInit( )
#ifdef __FB_WIN32__
   '' init winsock
   dim wsaData as WSAData
   if( WSAStartup( MAKEWORD( 1, 1 ), @wsaData ) <> 0 ) then
      print "Error: WSAStartup failed"
      end 1
   end if
#endif
end sub

sub doShutdown( )
#ifdef __FB_WIN32__
   '' quit winsock
   WSACleanup( )
#endif
end sub

Далее, если уж говорить о кроссплатформенности, где самому разработчику не надо использовать конструкции типа IFDEF, то в FreeBasic существует модуль для использования библиотеки CURL.
Вам нужны ещё доказательства Вашей полной неосведомлённости и несостоятельности или Вы, наконец, перестанете нести здесь всякую чушь, выпячивая, причём совершенно необоснованно, продукт Ваших коммерческих нанимателей?

Добавлено спустя 8 минут 12 секунд:
trink
Итак, сударь, совешенно чётко и однозначно доказано, что Вы врёте. Мало того, что врёте, так ещё и меня обвинили в этом, причём бездоказательно.
Я требую извинений с Вашей стороны.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Пред.След.

Вернуться в Потрепаться

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

Сейчас этот форум просматривают: stikriz11 и гости: 9

Рейтинг@Mail.ru