Четверг, 25 Апреля 2024, 11:28

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Форум игроделов » Программирование » Basic » FreeBasic (обсуждение freebasic)
FreeBasic
it_is_goodДата: Воскресенье, 08 Апреля 2012, 09:55 | Сообщение # 21
постоянный участник
Сейчас нет на сайте
Мне вот интересно, он сейчас ООП или нет?
И есть где-нибудь инфа о будущих версиях (что хотят туда добавить)?
trewДата: Воскресенье, 08 Апреля 2012, 11:21 | Сообщение # 22
почетный гость
Сейчас нет на сайте
Quote
Мне вот интересно, он сейчас ООП или нет?


Если имеется ввиду такое как у JAVA , то конечно нет. У Freebasic своеобразные классы, пока без наследования. С выходом новой версии будет наследование. Пока все тестируется, пишется документация, обновляются заголовки для новых версий библиотек и пр.

Вот ЗДЕСЬ список изменений всех версий.

Вообще БЕТУ 0.24 можно уже попробовать:

для Windows

для Linux

Единственно в ней не включены многие заголовки и библиотеки. Ее сделали для отлова багов с наследованием.

Это вы задавали вопросы на форуме freebasic ? Я посмотрел, вы ведь кодили на паскале. Я смотрю вы интересовались и PB и FB. Как оно смотреть в сторону бейсиков после паскаля? Ведь привычка программировать в строгом стиле врядли уйдет. Все равно потянет на привычный синтаксис. Я например не хочу уходить пока с бейсика как минимум из-за привычки регистроНЕзависимости и своеобразной свободы в стиле программирования.
Надо пишу в OOP стиле, надо в процедурном.
it_is_goodДата: Воскресенье, 08 Апреля 2012, 12:55 | Сообщение # 23
постоянный участник
Сейчас нет на сайте
trew, упс, засветился и запомнился или за мной следят bag
Ну а так, пытаюсь найти что-то оптимальное, и наверное выбор сделаю в пользу FB, хотя многие и говорят, что с++ круче всех, не пытаясь вникнуть, для чего мне нужен яп. Уже пытаюсь освоить и немного кодить smile вроде легко и просто, хотя есть некоторые вопросы, но пока пытаюсь сам в них разобраться.
PBPROGДата: Понедельник, 09 Апреля 2012, 15:23 | Сообщение # 24
постоянный участник
Сейчас нет на сайте
Кароче полазил я по форуму фрибасика и понял что у него куча проблем!

Вот к примеру пишут что нельзя компилить x64 проги. http://freebasic.justforum.net/t425-topic
И это при повсеместном переходе на 64 бита! PureBasic спокойно создает x64 программы и не зависит от программ посредников, типа GCC. Вообще, трансляция из бейсика в Си и последующая компиляция сильно скажется на оптимизации и раздутости программ.

А вот еще один маразм, нельзя в структурах использовать строковые переменные. http://freebasic.justforum.net/t322-topic
Это вообще каменный век. А чего тока стоит высказывание tux
Quote
Просто в большинстве реализаций бейсика вообще запрещено использовать тип string внутри структур
Фтопку язык программирования в котором в структурах строки запрещены! В том же PureBasic, можно создать строку в структуре и работать с ней.
Code
Structure TestStr
    String.s
EndStructure

Str.TestStr

Str\String="1234"
Debug Str\String
И нужно заметить что в структурах можно размещать не только строки, но и статические и динамические массивы, связанные списки, другие структуры и т. д.

Отсутствие нормальной поддержки юникода тоже не в пользу фрибасика. http://freebasic.justforum.net/t424-topic
В PureBasic с этим нет проблем и юникод полностью поддерживается.

--------------------

Вообще писать на чистом API как это в фрибасике, очень долго. Не зря же придумали разные библиотеки типа MFC и другие. А в FB до сих пор как в каменном веке, API и только API.


Сообщение отредактировал PBPROG - Понедельник, 09 Апреля 2012, 15:26
trewДата: Понедельник, 09 Апреля 2012, 21:25 | Сообщение # 25
почетный гость
Сейчас нет на сайте
Quote
А вот еще один маразм, нельзя в структурах использовать строковые переменные.


Ты уже начинаешь врать! АБЫ как да?
Кому интересно, тот дочитает до конца. DiG. GeRR в последнем сообщении объяснил что к чему.
А вообще ты хоть на другие языки посматривал? Видел как выделяются строковые переменные в структурах в СИ?
Если в Freebasic структуриванные переменные выделяются динамически с помощью ALLOCATE , то нужно использовать строки с определенной длиной.
Если же специальным оператором NEW , то длина не важна.

А так в твоем примере, никто не мешает выделять строки и в Freebasic

Quote
type Mytype
s as String
end type

dim S As Mytype
print len(s.s)
sleep


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


Это все можно размещать в структурах Freebasic + функции , перечисления. А в пурике это нельзя, и врядли когда будет можно.

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

Костыли в пуре типа этого:

Code
PtInRect_(@re, pt\x | (pt\y<<32)


Когда в нормальных языках указывается так как записано в справочнике по API. На Freebasic:

PtInRect(@R,P)

А да этого вообще у этой функции с какого-то перепугу на пуре было три параметра (справочники по API пурю не указ!):

Code
PtInRect_(re , pt\x , pt\y)


Ко всему этому:

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

Quote
Не зря же придумали разные библиотеки типа MFC и другие.


Конечно не зря и в Freebasic обильно юзают разные библиотеки. Более того, постоянно пишутся заголовки под новые библиотеки.
Только тебя то вроде как вообще не должно волновать, ты не дал ссылки ни на одно свое произведение, одна болтовня!

Кстати я и не спорю, в языке FreeBasic есть баги (в каком языке их нет), но писать на нем приятнее и удобнее чем на пуре. Для тебя может и доставляет удовольствие собирать пазлы из 2 половинок, а мне это просто скучно! Какой интерес писать проги из всего готового? Взять хотя бы готовую пуриковскую либу MOVIE , ну напишешь ты быдлокодерский проект простенького видеоплеера за пару часов и что? Твоих успехов там 10% за гуишную обетку в духе win95. А если что-то посерьезнее, то преимущества пуря заканчиваются сразу. Да и не научишься на пуре ничему. Все навыки что там приобретешь, окажутся бесполезными, если наконец откроешь глаза и захочешь писать на СИ или DELPHI .


Сообщение отредактировал trew - Понедельник, 09 Апреля 2012, 22:26
PBPROGДата: Понедельник, 09 Апреля 2012, 23:23 | Сообщение # 26
постоянный участник
Сейчас нет на сайте
Quote (trew)
Это все можно размещать в структурах Freebasic + функции , перечисления. А в пурике это нельзя, и врядли когда будет можно.
Про интерфейсы что-то слышал?
Или такой вариант видел?
Code
Procedure Test(String.s)
   Debug String
   ProcedureReturn 2
EndProcedure

Prototype ProtoTest(String.s)

Structure Test
   Test.ProtoTest
EndStructure

Struct.Test\Test=@Test()

Debug Struct\Test("Я функция в структуре")


Quote (trew)
Для тебя может и доставляет удовольствие собирать пазлы из 2 половинок, а мне это просто скучно!

Так коди на API раз нравится. Пишешь так как будто пурик не позволяет получить доступ к API.
Использование имеющихся функций здорово экономит время по сравнению с разработкой проги полностью на WinAPI.

Quote (trew)
Да и не научишься на пуре ничему.
Странное высказывание. Хочешь учить API, изучай, пурик полностью его поддерживает.

Quote (trew)
Все навыки что там приобретешь, окажутся бесполезными, если наконец откроешь глаза и захочешь писать на СИ или DELPHI.
Видимо с пуриком ты работал пару дней от силы не больше. Иначе такого не написал бы.
Если не нравятся функции из кроссплатформенной библиотеки, то пиши на API, ведь никто не запрещает это делать.
trewДата: Вторник, 10 Апреля 2012, 00:39 | Сообщение # 27
почетный гость
Сейчас нет на сайте
Quote
Про интерфейсы что-то слышал?
Или такой вариант видел?


Конечно видел, таким извратом не захочешь пользоваться, уж лучше процедурный стиль.
Это написали чтобы лишний показать У НАС ЕСТЬ! А чего есть, часто не понимают biggrin

Вот пример класса с Private и Public функциями, сможешь изобразить такое своими прототипами? И это я простенький пример, но думаю ты и с ним порядком засядешь.

Code
Type testing
   Public:
   number As Integer
   Declare Sub Setnome(ByRef newnome As String)
   Declare Function Getnome()As String
   Private:
   nome As String '<- приватная переменная, доступ можно получить только функциями из класса
   Declare Function GetH() As String '<- приватная функция
End Type

Sub testing.setnome( ByRef newnome As String )
   this.nome = newnome
End Sub

Function testing.Getnome()As String
   Return GetH()
End Function

Function testing.GetH()As String
   Return nome
End Function

Dim As testing myVariable
myVariable.setNome("FreeBasic")
? myVariable.GetNome()
Sleep


Но если справишься вот по серьезнее (способ получить адреса статических приватных процедур):

Code
Type Object

    Enum handlertype
   ht_default
   ht_A
   ht_B
    End Enum

    Declare Constructor( ByVal ht As handlertype = ht_default)

    Declare Sub handler()

Private:
    Declare Static Sub handler_default( ByRef obj As Object )
    Declare Static Sub handler_A( ByRef obj As Object )
    Declare Static Sub handler_B( ByRef obj As Object )
    handler_func As Sub( ByRef obj As Object )

End Type

Constructor Object( ByVal ht As handlertype )
    Select Case ht
    Case ht_A
   handler_func = @Object.handler_A
    Case ht_B
   handler_func = @Object.handler_B
    Case Else
   handler_func = @Object.handler_default
    End Select
End Constructor

Sub Object.handler()
    handler_func(This)
End Sub

Sub Object.handler_default( ByRef obj As Object )
    Print "Handling using default method"
End Sub

Sub Object.handler_A( ByRef obj As Object )
    Print "Handling using method A"
End Sub

Sub Object.handler_B( ByRef obj As Object )
    Print "Handling using method B"
End Sub

Dim objects(1 To 4) As Object => _
    { _
   Object.handlertype.ht_B, _
   Object.handlertype.ht_default, _
   Object.handlertype.ht_A _
    }

For i As Integer = 1 To 4
    Print i,
    objects(i).handler()
Next i
sleep


А вообще ты собирался меряться кол-вом строк по программе QUINE ?

Code

#Define P(X)?X:?"P("#X ")":sleep   
   P("#Define P(X)?X:?""P(""#X "")"":sleep")


Здесь 2 строчки, пойдешь на рекорд?

Quote
Использование имеющихся функций здорово экономит время по сравнению с разработкой проги полностью на WinAPI.


Для свистелок и перделок да, для всего остального ни в коем разе

Quote
Видимо с пуриком ты работал пару дней от силы не больше. Иначе такого не написал бы.


Вот ЗДЕСЬ не считая четырех все проги написаны мною на пуре. Ты сможешь написать такое за пару дней? Да они небольшие, может неприглядные и малонужные, но от тебя вообще вижу только треп.

Ссылки давай в студию где ты пользуешь суперфичами: кроссплатформенность, 64х битные приложения, юникод проги, которые я не смогу написать на Freebasic.

Я перечисляя достоинства FreeBasic, все кроме перегрузки операторов использую. А от твоих суперфич какая польза если ими никто не пользуется?
Это как светящий фонарик в яркий солнечный день:

Светит , не мешает, но и нафиг не нужен biggrin


Сообщение отредактировал trew - Вторник, 10 Апреля 2012, 00:42
PBPROGДата: Вторник, 10 Апреля 2012, 11:19 | Сообщение # 28
постоянный участник
Сейчас нет на сайте
Quote (trew)
А вообще ты собирался меряться кол-вом строк по программе QUINE ?
А что тут мерятся? wink
Держи, одна строка. biggrin
Code
x.s="Debug x":Debug x


Quote (trew)
Для свистелок и перделок да, для всего остального ни в коем разе
А где аргументы? Или будем бросать слова на ветер? То есть кроссплатформенная библиотека функций, значительно облегчающая не только переносимость кода на др. платформы, но и облегчающая программирование (не нужно копаться с API постоянно), это свистелки и перделки?
А есть ли такая библиотека в FreeBasic? Нету! Иначе бы не кодили бы на API. В PureBasic есть выбор, использовать функции среды или API, а в FreeBasic выбора нет - API и точка! И плевать на кроссплатформенность и на сложность разработки прог полностью на API! Мы ведь не думаем об своем личном времени, которое потратим на значительное усложнение программирования с использованием API, мы не думаем что придется перенести прогу на другую платформу (да хотя бы с x86 на x64 одной и той же платформы) Потому что мы юзаем FB.

Quote (trew)
Ты сможешь написать такое за пару дней?
Ага, ща кину все дела и будут переписывать эти проги. Зачем оно мне надо?

Quote (trew)
Ссылки давай в студию где ты пользуешь суперфичами: кроссплатформенность, 64х битные приложения, юникод проги, которые я не смогу написать на Freebasic.
Поищи по нету проги. Их там навалом.
Поддержка юникода незаменима есть нужно работать с текстом, котрый невозможно отобразить в ASCII формате в ОС.
К примеру, ты создал программу текст в окне которой на кириллице. И отправил эту прогу тому у кого не "русская" винда. Если прога будет использовать ASCII формат символов, то будут кракозябры, а в случае юникода, нормальный текст. Это по твоему не повод использовать юникод?
Сможешь на проге, написанной на FreeBasic, без извращений, одновременно вывести в окно текст на китайском, арабском русском и английском, как например, это сделано тут, внизу страницы?

Как я писал выше, мне приходилось переносить программы с винды на линукс. Сделать это оказалось довольно просто благодаря тому что использовал кроссплатформенную библиотеку функций.
А в FreeBasic нет такой библиотеки и перенос будет связанно с изрядной правкой кода.
trewДата: Вторник, 10 Апреля 2012, 12:08 | Сообщение # 29
почетный гость
Сейчас нет на сайте
Quote
x.s="Debug x":Debug x


И че ты тут вывел? Нужно , чтобы отображалась вся строка, понимаешь вся!
Состоит код из:

x.s="Debug x":Debug x

Должно точно также и вывестись

А не только Debug x

Ты бы хоть для начала почитал что такое QUINE . Вопрос остается в силе, кстати ты сам меряться хотел выше tongue

Quote
А в FreeBasic нет такой библиотеки и перенос будет связанно с изрядной правкой кода.


Ничего не нужно править, используя GTK.
Разработчики FreeBasic лучше будут заниматься усовершенствованием языка, а не тупо клепать обертки API, от которых ты так тащишься

Вообще фанов пурика невозможно убедить, правду пишут, что они похожи на сектантов.
Хочется сказать тебе PBPROG, что программирование только тогда приносит удовольствие,
когда твой код выглядит красивым и при этом ты не замечаешь что уже написал не одну тыщу строк.
Более того ощущение от того что ты сам написал, а не использовал готовые библиотеки еще больше подогревает.
Разработчики языков включают в свои детища различные вкусности, для того чтобы сделать код еще более красивым,
а написание удобным!

Не удержался , несколько примеров:

Преобразование чисел в строки в FB можно так:

Code
? 1 & "00"
sleep


Можно так:

Code
? Str(1) + "00"
sleep


У PB только так:

Code
OpenConsole()
Print(Str(1) + "00")
Delay(1000)
CloseConsole()


Вызов функций и процедур в FB можно как со скобками так и без:

Code
Function a() As String
  Return "FreeBasic"
End Function

? a
Sleep


В PB только со скобками, при том понятие процедур и функций слито в одно (то есть процедура всегда что-то возвращает)):

Code
Procedure.s a()
    ProcedureReturn "PureBasic"   
EndProcedure

OpenConsole()
Print(a())
Delay(1000)
CloseConsole()


У FB 15 встроенных типов данных (Byte , UByte , Short , UShort , Integer , UInteger , Long , Ulong , LongInt , ULongInt , Single , Double , String , ZString , WString)
Это не только упрощает понимание кода, но они действительно нужны, например:

Простая нитривиальная задача получить беззнаковое число из знакового

Code
Dim i As Long = &hffff0000
Dim i2 As ULong = i
? i,i2
Sleep


Результат: -65536 4294901760

У PB 13 типов данных (Byte,Ascii,Character,Word,Unicode,Character,Long,Integer,Integer,Float,Quad,Double,String)

Чтобы прошлый пример воспроизвести на PB , нужен изврат, типа этого:

Code
i.i = $ffff0000
i2.q = i & $ffffffff  ; объявить тип QUAD 8 байтовый и обработать оператором AND - супермегафича (такое впечатление что на ограниченном ASM пишешь)!
OpenConsole()
Print(Str(i) + " " + Str(i2)) ; разница вывода в консоль очевидна по отношению к FB  
Delay(2000)
CloseConsole()


Теперь пример, какой на пуре без процедур вообще не сляпать:

Code
Dim As integer i = 1000
For i As Integer = 1 To 10
   ? i
Next
? i
Sleep


Объявление и заполнение массивов на FB :

Code
Dim As integer i(4) = {5,20,31,4,5}
For a As Integer = 0 To 4
  ? i(a)
Next
Sleep


Объявление и заполнение массивов на PB:

Code
Dim i.l(4)

OpenConsole()
For a = 0 To 4
    Read.l i(a)
Next
For a = 0 To 4
    PrintN( Str(i(a)))
Next  
Delay(2000)
CloseConsole()

DataSection  
   Data.l 5, 20, 31, 4, 5
EndDataSection


Или заполнять массивы вручную, типа:

Code
i(0) = 5
i(1) = 20
...


что при большом кол-ве заполнения ячеек приведет к полному одурению.

Кстати на нормальных языках СИ, Delphi делается примерно так же как на FB. И даже у ASM инициализация массивов делается проще чем у пура

Code
...

i dd 23,15,44,66,9

...


Кроме того массивы в FB могут иметь нижнюю границу, отличную от нуля:

Code
Dim as Byte M(5 to 10)


У PB всегда нижняя граница нуль.

Заполнение структур на FB

Code
Type AA
   As Integer x
   As Byte b
   As String*10 s
End Type

Dim a As AA = Type(3,5,"Freebasic")'заполнение структуры
? a.x,a.b,a.s 'вывод в консоль
Sleep


Как видно, достаточно удобно, особенно при заполнении объемных структур.
Можно вообще начальными значениями инициализировать в FB:

Quote
Type AA
As Integer x=3
As Byte b=5
As String s="Freebasic"
End Type

Dim a As AA
? a.x,a.b,a.s
Sleep


У пура можно только вручную, вызывая каждое поле структуры(примитив, что скажешь):

Quote
Structure MY
a.l
b.b
s.s
EndStructure

a.MY
a\a=10
a\b=5
a\s="Purebasic"

OpenConsole()
PrintN( Str(a\a) + " " + Str(a\b) + " " + a\s)
Delay(2000)
CloseConsole()


Доступ к полю через слеш нечто!

Пространства имен на FB:

Code
Namespace MyName
     Sub Print()
         ? "this procedure"
     End Sub
     Dim a As Integer
End Namespace

MyName.Print
Sleep


На PB такого нет и врядли будет!

Области видимости SCOPE

Code
Dim a As Integer=55
Scope  
   Dim a As String="Hello"
   ? a
End Scope
? a
Sleep


И такого на PB такого нет и врядли будет!

Блок Select Case

Code
Dim A As Ubyte =15
Select Case A
     Case Is <5
         Print "A<5"
     Case Is >=15
         Print "A>=15"
     Case Else
         Print "Not found" 'Не найдено
End Select
Sleep


Заметили Case is очень удобная фишка! На PB только прямое равенство:

Code
Select a
   Case 1
   Case 6
EndSelect


Теперь о графике. Буду объективным. Встроенных 3D функций в FB нет, в PB есть и можно создать что-то на них, и даже на оф.сайте видел какую-то бродилку.
Я в 3D полный нуб, так что о качестве функций и возможностях судить не могу. Но если верить заявлению участника ant0N с этого сайта, впечатления неважные:

http://gcup.ru/forum/64-21343-1

Что касается 2D , то тут у FB сделано намного проще. Пример вывода простого круга:

Code
Screen 14 'подключаем экран
Circle (160, 120), 100, 15 'Рисуем простой круг
sleep


Вот самый простой пример на PB , уж вроде проще никак, хотя могу ошибаться:

Code
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0  
   MessageRequester("Error","Can't open DirectX",0)  
   End  
EndIf  
If OpenWindow(0, 0, 0, 640, 480, apptitle.s,  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)  
EndIf  
If OpenWindowedScreen(WindowID(0),0,0,640, 480,0,0,0)  
   Repeat  
     FlipBuffers():ClearScreen(RGB(0,0,0))  
     If StartDrawing(ScreenOutput())  
       Circle(100,100,100,$ffffff)
       StopDrawing()  
     EndIf  
   Until WaitWindowEvent() = #PB_Event_CloseWindow  
EndIf


Вот правда пример с помощью оберток GDI из библиотеки 2dDrawing.
Однако игроделами, GDI никогда не используется для анимированных игр из-за низкой производительности:

Code
If OpenWindow(0, 0, 0, 200, 200, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
     If StartDrawing(WindowOutput(0))
       Circle(100, 100, 100, $ffffff)
     StopDrawing()  
     EndIf
     Repeat
       Event = WaitWindowEvent()
     Until Event = #PB_Event_CloseWindow
EndIf


Вот на FB простая анимация движения круга:

Code
Screen 14  
Dim x As Integer = -50
Do
Cls
Circle (x, 120), 100, 15
If x>400 Then x=-50
x+=1
Sleep(20)
Loop Until MultiKey(1)'Esc


Ограченная работа с макросами у PB вообще удивляет, если учесть что PB транслятор в FASM (который славится макросами)

Quote
Поищи по нету проги. Их там навалом.


Опять-двадцать пять. Я написанной на пуре не нашел ни одной кроссплатформенной и 64 битного приложения тоже нет.
Тебе что трудно дать ссылки на свои проги? Я же не прошу исходников. cool
PBPROGДата: Вторник, 10 Апреля 2012, 13:24 | Сообщение # 30
постоянный участник
Сейчас нет на сайте
Quote (trew)
И че ты тут вывел? Нужно , чтобы отображалась вся строка, понимаешь вся! Состоит код из: x.s="Debug x":Debug x Должно точно также и вывестись А не только Debug x
Ну извини, ты первый начал жульничать!
Вот смотри, твой код, в котором слегка модифицирована вторая строка, а первая (верхняя) не тронута.
Code
#Define P(X)?X:?"P("#X ")":sleep    
    P("#""P(""#X "")"":sleep")
Сразу видно что это обманка, а не вывод исходника.

Quote (trew)
Разработчики FreeBasic лучше будут заниматься усовершенствованием языка, а не тупо клепать обертки API, от которых ты так тащишься
Это уменьшает число строк кода. К примеру.
Code

Flags=#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered  
OpenWindow(0, 0, 0, 120, 50, "Демо", Flags)  
TextGadget(0, 10, 16, 100, 16,"Привет мир", #PB_Text_Center)
Repeat
    Event = WaitWindowEvent()  
Until Event = #PB_Event_CloseWindow
На API будет намного больше строк.

Quote (trew)
Ничего не нужно править, используя GTK.
Думаешь что под винду целесообразно писать используя GTK? Ну-ну.
PureBasic под винду транслирует в WinAPI а под линукс, в GTK. Это намного рациональнее, чем устанавливать тонны метров либы GTK для работы прог под виндой.
Поэтому я считаю что в FreeBasic нет нормальных средств для создания кроссплатформенных приложений. Или поспоришь с этим?

Quote (trew)
Более того ощущение от того что ты сам написал, а не использовал готовые библиотеки еще больше подогревает.
Хм, любой нормальный язык поддерживает WinAPI и не нужно писать так, как будто это заслуга тока FB. И заметь, даже используя WinAPI ты используешь готовые библиотеки и поэтому (по твоему мнению) не получишь удовольствия от программирования.
Пиши все с нуля - напиши свою ОС, изобрети свой процессор, иначе удовольствия не получишь используя готовое.
Запомни, если все будут изобретать колесо, никто не придумает телегу! Нужно пользоваться наработками других и глупо от них отказываться.

Quote (trew)
У PB только так:
Пурик видно и дня не учил, раз не знаешь о том, что нужно использовать не Delay(), а Input().
Вообще, строгая типизация позволяет быстро отлавливать ошибки и это только плюс, а код можно сократить до.
Code

Debug Str(1) + "00"


Quote (trew)
Вызов функций и процедур в FB можно как со скобками так и без:
Атавизм древних версий бейсика.
Объясни в чем преимущество вызова процедуры/функции без скобок?
trewДата: Вторник, 10 Апреля 2012, 13:51 | Сообщение # 31
почетный гость
Сейчас нет на сайте
Тот код, который указал я:

Code
#Define P(X)?X:?"P("#X ")":sleep    
    P("#Define P(X)?X:?""P(""#X "")"":sleep")


Тот код, который указываешь ты:

Code
#Define P(X)?X:?"P("#X ")":sleep     
     P("#""P(""#X "")"":sleep")


Только слепой не заметит, что ты просто провоцируешь.

Quote
Пурик видно и дня не учил, раз не знаешь о том, что нужно использовать не Delay(), а Input().


Глупость какая-то! Какая разница чем я торможу прогу для просмотра инфы в консоли? Кстати в большинстве примеров, они выполняют именно ту задачу, какая поставлена: ПАУЗА (2 секунды)->ВЫХОД

Quote
Думаешь что под винду целесообразно писать используя GTK? Ну-ну.


А как же такие проги как GIMP ? Ничего, никто не жалуется. Да считаю целесообразным, да и красивее GTK виджеты, чем контролы винды.

PBPROGДата: Вторник, 10 Апреля 2012, 14:01 | Сообщение # 32
постоянный участник
Сейчас нет на сайте
Quote (trew)
Только слепой не заметит, что ты просто провоцируешь.
Я не провоцирую, я же написал.
Quote (PBPROG)
Вот смотри, твой код, в котором слегка модифицирована вторая строка, а первая (верхняя) не тронута.
Про модификацию второй строки я указал или нет?

Quote (trew)
А как же такие проги как GIMP ?
Думаешь что ради твоей простой проги кто-то будет ставить многометровую библиотеку?
Да и зачем зависимости? Если есть PureBasic с нормальной кроссплатформенной библиотекой, для работы прог на котором, зависимости не нужны.
trewДата: Вторник, 10 Апреля 2012, 14:23 | Сообщение # 33
почетный гость
Сейчас нет на сайте
Quote
Про модификацию второй строки я указал или нет?


Может тут не понял, что ты пытался сказать... Объясню еще раз задачу:

Надо вывести в консоль (в случае с purebasic можно в окно DEBUG) листинг своего собственного кода. Запусти мой пример, и поймешь что все выводится, до последней закорючки. В твоем случае код выводится не полностью. Задача понятна? И заметь не я начал по поводу кол-ва строк кода создания проги QUINE. А теперь , когда ты понял, что с задачей (сделать код из меньшего кол-ва строчек или хотя бы столько же) в принципе не справиться средствами пурика, начинаешь базар в сторону тянуть.

Quote
Да и зачем зависимости? Если есть PureBasic с нормальной кроссплатформенной библиотекой, для работы прог на котором, зависимости не нужны.


Это мы уже поняли, или так и будешь как попугай повторять? Да ты меня убедил! Пиши на пурике, для тебя в ближайшем будующем разглядеть что-то другое нет возможности, да тебе и нужно. Надеюсь по поводу спора мы решили, если напишешь код QUINE или сможешь переписать на пур примеры, которые я тебе показывал выше: добро пожаловать! Будет интересно посмотреть.


Сообщение отредактировал trew - Вторник, 10 Апреля 2012, 15:22
divol13Дата: Среда, 11 Апреля 2012, 14:14 | Сообщение # 34
участник
Сейчас нет на сайте
хммм, господа, на наших глазах, происходит невероятное. Первый случай меряния БЭЙСИКАМИ smile
и о чем спор-то. Пишите на том, что нравится именно вам, если прога работает и делает это правильно, то нет никакой разницы, на чем она написана. Результат, определеяет все. А средства его достижения у всех разные и в конечном итоге важны лишь создателю программы.
Мир Вам! yes




Сообщение отредактировал divol13 - Среда, 11 Апреля 2012, 14:15
PBPROGДата: Среда, 11 Апреля 2012, 19:52 | Сообщение # 35
постоянный участник
Сейчас нет на сайте
Quote (divol13)
хммм, господа, на наших глазах, происходит невероятное. Первый случай меряния БЭЙСИКАМИ
Нет не первый, и раньше было.
Какбээээээээ, холивар начал не я, а trew, неосторожно проронив эти фразы.
Quote (trew)
До знакомства с FreeBasic , я писал на PureBasic и примерно через год, спросил себя: "Ну, и чему ты научился?" Кроме встроенных общеупотребляемых функций пурика, да десятка API - ничему! PureBasic мне показался обособленным языком (или пусть простят меня пуриковцы - языком для ленивых).
В этом он реально неправ!
Если он ничему не научился, то это проблема не языка, а его. Значит не пытался учится. Ктож ему мешал учить WinAPI? Тем более чтоPureBasic имеет встроенную поддержку API функций.
И какбээээээээ всячески стараются упростить программирование, но нонсенс, trew предпочитает усложнить программирование. fool shock
Вот пусть он пишет в машинных кодах. Это точно не для ленивых. eek biggrin
trewДата: Среда, 11 Апреля 2012, 22:49 | Сообщение # 36
почетный гость
Сейчас нет на сайте
Quote
Первый случай меряния БЭЙСИКАМИ


Если интересно, вот здесь есть подобное. Там, как и здесь меня больше всего повеселило:

Quote (jangle)
....нет ООП


Quote (HAWK)
Тоже неправы. Есть ООП. Вот пример:

Interface Inter_Face
MSG(Message.s)
EndInterface

Structure OBJ
VTable.l
Function.l[SizeOf(Inter_Face)/4]
EndStructure

Procedure Message(*t.Inter_Face, Message.s)
MessageRequester("", Message.s)
EndProcedure

Procedure Constructor()
*OBJ.OBJ = AllocateMemory(SizeOf(OBJ))
*OBJ\VTable = *OBJ+OffsetOf(OBJ\Function)
*OBJ\Function[0] = @Message()
ProcedureReturn *OBJ
EndProcedure

Procedure Destructor(*OBJ.OBJ)
FreeMemory(*OBJ.OBJ)
EndProcedure

*MyOBJ.Inter_Face = Constructor()
*MyOBJ\MSG("Hallo, dies ist ein Testtext")
Destructor(*MyOBJ)


Только здесь PBPROG хоть свой изврат не назвал OOP biggrin

HAWK там расчитывал, что никто это проверять не будет и оказался прав (на дурака влетел, как говорят).

Для тех кто не понимает о чем речь:

Конструктор (Constructor), как и деструктор (Destructor) должен вызываться автоматически при создании и уничтожении объекта, а здесь один вызывается вначале и присваивается указателю, другой в конце (в общем та же процедура). biggrin Более того, класс это нечто закрытое, для всего, кроме объекта, через который вызывается. Они для того и нужны, чтобы защитить данные. Но в данном примере это суперкласс! Его метод Message можно вызывать как хочешь, хоть через объект, хоть напрямую, передав параметры biggrin Спрашивается зачем нужен такой класс? Правильно чтобы блефануть перед остальными, проверять ведь врядли кто будет, ну а проверят, заболтает или поведет в сторону, прямо как здесь товарисч PBPROG. Они очень схожи по манерам (скорее всего одна личность), так что можно в какой-то степени считать данную тему лишь продолжением предыдущей biggrin

Вообще на Луркоморье было в какой-то степени правдиво сказано как о языке, так и о прихожанах с русского форума ПУРА, но фаны поначалу правили, а потом поняли, что как не правь все равно шила в мешке не утаишь, решили просто удалить (луркоморье ведь подобно википедии):

Вот цитатка (конечно я выбрал самое нужное crazy ):

Quote
PureBASIC (пур, пурик, ПБ) — надстройка над фасмом, своеобразный язык программирования подчеркнуто среднего уровня, ведущий свои корни с AmigaOS. Меметичен, в первую очередь, активным форсом на быдлопроектах вроде ответов@mail.ru и гуглответов. Задайте там вопрос вроде: "мне 14 лет, я страдаю аутизмом и приступами паники, меня бьют в музыкальной школе и у меня не хватает денег на WoW, поэтому я хочу написать свой; с чего начать?" - и обязательно получите ссылку от агентов ZOG, удачно использующих тягу растущего организма к непонятному. Таким макаром уже набралось порядочное комьюнити детей, решающих бесполезные задачи бесполезным инструментом. Семантически, бейсиком не является - часть Basic в названии лишь намекает на некоторое сходство синтаксисов. Впрочем, взамен есть возможность конители с указателями, так что можно невозбранно использовать родные низкоабстрактные сервисы операционных систем и прочие конительные штучки. Проприетарен и весьма платен, но в этой стране как обычно.

Компилятор почти никогда не делает то, о чем его не просят. Даже поддержку плагинов для нестандартных форматов данных надо впиливать вручную.
Нет ООП. И не будет. Никогда. Создатели PB являются ярыми противниками этой концепции, так как она противоречит здравому смыслу ассемблерщика.
Местами идущее вразрез с логикой стремление к чистоте синтаксиса.
Язык не поддерживает тип Any, и даже из встроенных библиотек эта полу-ООП’шная ересь потихоньку выкорчевывается, ибо не сурово.
Нету перегрузки процедур.
Нет поддержки пространств имен\модулей.
Не поддерживает инкрементальной компиляции.
Не поддерживается определение макрокоманды из другой макрокоманды.
Из-за особенностей реализации With…EndWith не работает в макросах.
Нет возможности узнать тип переменной после ее определения. Изменить, впрочем, тоже нельзя . Рождённое однажды живо до смерти.
Якобы насаждаемая идеология «делай, что хочешь» частенько пресекается параноидальным отладчиком.
Передачу параметра по указателю надо оформлять вручную (или через макросы).
Определенные проблемы с совместимостью версий, из-за которых с недавних пор выпилена доставлявшая документация по внутренностям библиотек.
Без сторонних средств (TailByte, к примеру) нельзя делать статические библиотеки.
Фимозность организации некоторых библиотек: так, Movie под Вендой зачем-то использует DirectShow, в результате чего оно совершенно непригодно для работы с MP3.
Нельзя определить факт неиспользования подсистемы. SubSystem("") всегда равно #False.
Перечисления не поддерживают степенной шаг.
Поддерживаются только С- и Std- конвенции вызова.
Операторы бинарной логики не применимы к числам с плавающей точкой, причем компилятор в этом отношении особенно упорен и стоит до конца.
Через одно место поддержка определения статического импорта (проще сидеть на прототипах).
PBPROGДата: Четверг, 12 Апреля 2012, 12:30 | Сообщение # 37
постоянный участник
Сейчас нет на сайте
Quote (trew)
Они очень схожи по манерам (скорее всего одна личность)
Ошибаетесь. К тому спору я отношения не имею.

Quote (trew)
проверят, заболтает или поведет в сторону, прямо как здесь товарисч PBPROG
Нет, как товарищ trew, который проигнорировал мой предыдущий пост и пытается перевести тему в другое русло.

Но раз он начал об недостатках языка, то давайте уж не оставим без внимания и FreeBasic.
Вот его недостатки (возможно их больше, я сильно не вникал).

Совместим с допотопным QuickBASIC, поэтому волочит за собой все древние "фишки", которые давно устарели и только затрудняют программирование. К примеру меня раздражает объявление переменных через Dim, да еще и с полным именем типа. И спрашивается, зачем Then после If? Опять атавизм первых версий бейсика? Это скока букаф надо с клавы ввести?

Есть версии только для DOS (нахрена эта древность нам нада?), Windows x86 и Linux x86, но для x64 и MacOS X версий нет. При этом, отсутствует кроссплатформенная библиотека функций, что несколько затрудняет переностимость программ, что проще написать программу с нуля, чем переносить ее с одной платформы на другую.

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

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

Нет нормальной среды разработки. К примеру FbEdit, нет многих нужных фишек, типа подсказок к функциям, выделения цветом функций, окна автозавершения и многого, многого другого. Лично у меня не получается ввести русский текст в редактор кода, это нормально?
А про то, что нет нормального отладчика, я вообще молчу.


Сообщение отредактировал PBPROG - Четверг, 12 Апреля 2012, 13:05
trewДата: Четверг, 12 Апреля 2012, 14:14 | Сообщение # 38
почетный гость
Сейчас нет на сайте
Quote
Ошибаетесь. К тому спору я отношения не имею.


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

Quote
Нет, как товарищ trew, который проигнорировал мой предыдущий пост и пытается перевести тему в другое русло.


И на что там дать ответ? На это:

Quote
Ктож ему мешал учить WinAPI?


Так я отвечал уже вроде, но ладно повторю:
Quote

Костыли в пуре типа этого:

Code
PtInRect_(@re, pt\x | (pt\y<<32)

Когда в нормальных языках указывается так как записано в справочнике по API. На Freebasic:

PtInRect(@R,P)

А да этого вообще у этой функции с какого-то перепугу на пуре было три параметра (справочники по API пурю не указ!):


Достаточно понятно?

Quote
Совместим с допотопным QuickBASIC, поэтому волочит за собой все древние "фишки", которые давно устарели и только затрудняют программирование. К примеру меня раздражает объявление переменных через Dim, да еще и с полным именем типа. И спрашивается, зачем Then после If? Опять атавизм первых версий бейсика? Это скока букаф надо с клавы ввести?


Я всегда думал, что совместимость с другими языками это достоинство. Раз ты думаешь по другому, тут я не буду спорить.

Насчет IF-ENDIF , возможно тут ты прав. Хотя мне иногда удобно записать так:

Code
If a=5 then beep


У в ПУРЕ только так:

Code
if a=5
beep
endif


Так что тут двояко я бы сказал. Кстати современный Small Basic от мелкософта тоже выбрал связку IF-THEN-ENDIF . Или ты и их обвинишь в аватавизме? Кстати если брать в расчет твои понимания программирования, то твой ПУР со своим легендарным примером из пустого, никому не нужного окна по кол-ву строчек отдыхает по сравнению со Small Basic Там все это дело записывается в одну строчку:

Code
Turtle.Show()


Кстати при таком коде еще и черепашка по середине будет! Однако все понимают что Small Basic - это перевалочный пункт (язык для обучения), и никому и в голову не придет тролить по сети и доказывать что это проффесиональный язык программирования. Про Freebasic я тоже говорю такое же , цитата из моей статьи:

Quote
Синтаксис языка удобочитаем, прост , легок для изучения. И все же его отличия от С подобных языков не такие пространственные, а уж с Visual Basic и подавно намечается больше сходства, чем различия. Изучив FreeBasic, вы осознаете алгоритмы принятых стандартов программирования, и легко сможете впоследствии перейти на С++ и другие, заслуженные временем языки, если в том окажется надобность.


ССЫЛЬ

А оператор DIM используется в FREEBASIC, POWERBASIC, VISUALBASIC как минимум. И от тебя первого слышу жалобу biggrin

Quote
Есть версии только для DOS (нахрена эта древность нам нада?)


Не говори за всех! Ты наверно просто не в курсе, что до сих пор продаются нетбуки с системой FREEDOS , а на FREEDOS Freebasic работает нормально. Ведь это мы с тобой живем в стране, в которой можем позволить купить или своровать винду. Есть страны, в которых люди покупают слабенькие компы с операционной системой FREEDOS .

Quote
Нет нормальной среды разработки. К примеру FbEdit, нет многих нужных фишек, типа подсказок к функциям, выделения цветом функций, окна автозавершения и многого, многого другого.


Вранье от начала до конца!

Quote
Лично у меня не получается ввести русский текст в редактор кода, это нормально?


Может тебе сначала нужно научиться переключать раскладку?
PBPROGДата: Четверг, 12 Апреля 2012, 15:03 | Сообщение # 39
постоянный участник
Сейчас нет на сайте
Quote (trew)
Возможно, но боязнь дать ссылки на свои многотысячные проги, которые ты якобы переносил на другие платформы, говорит о том, что ты боишься , потому что я сразу пойму кто хозяин .
Во первых они не многотысячные.
А во вторых, большинство моих прог коммерческие. Нужно уметь зарабатывать деньги на программировании а не все выкладывать для свободного скачивания!

Quote (trew)
Достаточно понятно?
Таких функций всего несколько. Если память не изменяет то это только PtInRect и WindowFromPoint.
Менять язык только из-за двух функций, ИМХО глупо, так что НЕ ПОНЯТНО!
Чтож мешало проявить смекалку
Code
PtInRect_(re, PeekQ(pt))


Quote (trew)
Я всегда думал, что совместимость с другими языками это достоинство.
Да, но не в том случае, когда ради совместимости, в языке появляются костыли и усложняется программирование.

Quote (trew)
Не говори за всех! Ты наверно просто не в курсе, что до сих пор продаются нетбуки с системой FREEDOS , а на FREEDOS Freebasic работает нормально. Ведь это мы с тобой живем в стране, в которой можем позволить купить или своровать винду. Есть страны, в которых люди покупают слабенькие компы с операционной системой FREEDOS .
Этож наскока комп должен быть слабым, чтобы на него нельзя было поставить линукс?
Наверное такие компы тока у самых бедных бомжей, которым неповезло и лучшего компа не удалось найти на помойке!
Линь все таки с графическим интерфейсом, под нее есть много прог и вайн. Зачем тогда нужна DOS?

Quote (trew)
Вранье от начала до конца!
Так аргументируем. Ссылки на требуемые файлы и инструкции по установке и настройке приветствуются.

Quote (trew)
Может тебе сначала нужно научиться переключать раскладку?
Очень смешно! Прям ржунемагу и подсталом.
Вот скин из FbEdit, в который ввел фразу "Русский текст".
trewДата: Четверг, 12 Апреля 2012, 16:14 | Сообщение # 40
почетный гость
Сейчас нет на сайте
Quote
А во вторых, большинство моих прог коммерческие.


Так покажи не большинство!

Quote
Таких функций всего несколько. Если память не изменяет то это только PtInRect и WindowFromPoint.
Менять язык только из-за двух функций, ИМХО глупо, так что НЕ ПОНЯТНО!
Чтож мешало проявить смекалку


Супер! Купи за бабло компилятор, а потом еще для него смекалку проявлять? Уж лучше я возьму любую бесплатную альтернативу, которых сейчас не мало , и в разы лучше твоего пура. Там не надо изобретать костылей!

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

Quote
Да, но не в том случае, когда ради совместимости, в языке появляются костыли и усложняется программирование.


Пример покажи , а не треплись! Ты среду то настроить не можешь, а судишь о таких вещах.

Quote
Этож наскока комп должен быть слабым, чтобы на него нельзя было поставить линукс?
Наверное такие компы тока у самых бедных бомжей, которым неповезло и лучшего компа не удалось найти на помойке!
Линь все таки с графическим интерфейсом, под нее есть много прог и вайн. Зачем тогда нужна DOS?


Ты в реале не втыкаешь о том что я тебе написал выше? По этому поводу мне тебе сказать больше нечего.

Quote
Так аргументируем. Ссылки на требуемые файлы и инструкции по установке и настройке приветствуются.


Вообще то я не должен как бы тебе что-то аргументировать, не я врал! Но чисто из-за того, что сказал А, говори Б:









Подсветка для функций и всего остального видна? Подсказки видны? Автодополнение видно? Отладчик виден? Русские буквы видны? Единственно я забыл в примере память освободить, но не для этого я пример писал. Кстати заметил какие типы данных используются? . Вот именно поэтому на Freebasic легче понять API. Там не надо думать каким его типом заменить, какую смекалку проявлять, просто берешь и ставишь какой указан в справочнике!
Форум игроделов » Программирование » Basic » FreeBasic (обсуждение freebasic)
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг