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, упс, засветился и запомнился или за мной следят Ну а так, пытаюсь найти что-то оптимальное, и наверное выбор сделаю в пользу FB, хотя многие и говорят, что с++ круче всех, не пытаясь вникнуть, для чего мне нужен яп. Уже пытаюсь освоить и немного кодить вроде легко и просто, хотя есть некоторые вопросы, но пока пытаюсь сам в них разобраться.
|
|
| |
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 Про интерфейсы что-то слышал? Или такой вариант видел?
Конечно видел, таким извратом не захочешь пользоваться, уж лучше процедурный стиль. Это написали чтобы лишний показать У НАС ЕСТЬ! А чего есть, часто не понимают
Вот пример класса с 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, все кроме перегрузки операторов использую. А от твоих суперфич какая польза если ими никто не пользуется? Это как светящий фонарик в яркий солнечный день:
Светит , не мешает, но и нафиг не нужен
Сообщение отредактировал trew - Вторник, 10 Апреля 2012, 00:42 |
|
| |
PBPROG | Дата: Вторник, 10 Апреля 2012, 11:19 | Сообщение # 28 |
постоянный участник
Сейчас нет на сайте
| Quote (trew) А вообще ты собирался меряться кол-вом строк по программе QUINE ? А что тут мерятся? Держи, одна строка. 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 . Вопрос остается в силе, кстати ты сам меряться хотел выше
Quote А в FreeBasic нет такой библиотеки и перенос будет связанно с изрядной правкой кода.
Ничего не нужно править, используя GTK. Разработчики FreeBasic лучше будут заниматься усовершенствованием языка, а не тупо клепать обертки API, от которых ты так тащишься
Вообще фанов пурика невозможно убедить, правду пишут, что они похожи на сектантов. Хочется сказать тебе PBPROG, что программирование только тогда приносит удовольствие, когда твой код выглядит красивым и при этом ты не замечаешь что уже написал не одну тыщу строк. Более того ощущение от того что ты сам написал, а не использовал готовые библиотеки еще больше подогревает. Разработчики языков включают в свои детища различные вкусности, для того чтобы сделать код еще более красивым, а написание удобным!
Не удержался , несколько примеров:
Преобразование чисел в строки в FB можно так:
Можно так:
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 битного приложения тоже нет. Тебе что трудно дать ссылки на свои проги? Я же не прошу исходников.
|
|
| |
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(). Вообще, строгая типизация позволяет быстро отлавливать ошибки и это только плюс, а код можно сократить до.
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 |
участник
Сейчас нет на сайте
| хммм, господа, на наших глазах, происходит невероятное. Первый случай меряния БЭЙСИКАМИ и о чем спор-то. Пишите на том, что нравится именно вам, если прога работает и делает это правильно, то нет никакой разницы, на чем она написана. Результат, определеяет все. А средства его достижения у всех разные и в конечном итоге важны лишь создателю программы. Мир Вам!
Сообщение отредактировал divol13 - Среда, 11 Апреля 2012, 14:15 |
|
| |
PBPROG | Дата: Среда, 11 Апреля 2012, 19:52 | Сообщение # 35 |
постоянный участник
Сейчас нет на сайте
| Quote (divol13) хммм, господа, на наших глазах, происходит невероятное. Первый случай меряния БЭЙСИКАМИ Нет не первый, и раньше было. Какбээээээээ, холивар начал не я, а trew, неосторожно проронив эти фразы. Quote (trew) До знакомства с FreeBasic , я писал на PureBasic и примерно через год, спросил себя: "Ну, и чему ты научился?" Кроме встроенных общеупотребляемых функций пурика, да десятка API - ничему! PureBasic мне показался обособленным языком (или пусть простят меня пуриковцы - языком для ленивых). В этом он реально неправ! Если он ничему не научился, то это проблема не языка, а его. Значит не пытался учится. Ктож ему мешал учить WinAPI? Тем более чтоPureBasic имеет встроенную поддержку API функций. И какбээээээээ всячески стараются упростить программирование, но нонсенс, trew предпочитает усложнить программирование. Вот пусть он пишет в машинных кодах. Это точно не для ленивых.
|
|
| |
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
HAWK там расчитывал, что никто это проверять не будет и оказался прав (на дурака влетел, как говорят).
Для тех кто не понимает о чем речь:
Конструктор (Constructor), как и деструктор (Destructor) должен вызываться автоматически при создании и уничтожении объекта, а здесь один вызывается вначале и присваивается указателю, другой в конце (в общем та же процедура). Более того, класс это нечто закрытое, для всего, кроме объекта, через который вызывается. Они для того и нужны, чтобы защитить данные. Но в данном примере это суперкласс! Его метод Message можно вызывать как хочешь, хоть через объект, хоть напрямую, передав параметры Спрашивается зачем нужен такой класс? Правильно чтобы блефануть перед остальными, проверять ведь врядли кто будет, ну а проверят, заболтает или поведет в сторону, прямо как здесь товарисч PBPROG. Они очень схожи по манерам (скорее всего одна личность), так что можно в какой-то степени считать данную тему лишь продолжением предыдущей
Вообще на Луркоморье было в какой-то степени правдиво сказано как о языке, так и о прихожанах с русского форума ПУРА, но фаны поначалу правили, а потом поняли, что как не правь все равно шила в мешке не утаишь, решили просто удалить (луркоморье ведь подобно википедии):
Вот цитатка (конечно я выбрал самое нужное ):
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 , возможно тут ты прав. Хотя мне иногда удобно записать так:
У в ПУРЕ только так:
Так что тут двояко я бы сказал. Кстати современный Small Basic от мелкософта тоже выбрал связку IF-THEN-ENDIF . Или ты и их обвинишь в аватавизме? Кстати если брать в расчет твои понимания программирования, то твой ПУР со своим легендарным примером из пустого, никому не нужного окна по кол-ву строчек отдыхает по сравнению со Small Basic Там все это дело записывается в одну строчку:
Кстати при таком коде еще и черепашка по середине будет! Однако все понимают что Small Basic - это перевалочный пункт (язык для обучения), и никому и в голову не придет тролить по сети и доказывать что это проффесиональный язык программирования. Про Freebasic я тоже говорю такое же , цитата из моей статьи:
Quote Синтаксис языка удобочитаем, прост , легок для изучения. И все же его отличия от С подобных языков не такие пространственные, а уж с Visual Basic и подавно намечается больше сходства, чем различия. Изучив FreeBasic, вы осознаете алгоритмы принятых стандартов программирования, и легко сможете впоследствии перейти на С++ и другие, заслуженные временем языки, если в том окажется надобность.
ССЫЛЬ
А оператор DIM используется в FREEBASIC, POWERBASIC, VISUALBASIC как минимум. И от тебя первого слышу жалобу
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. Там не надо думать каким его типом заменить, какую смекалку проявлять, просто берешь и ставишь какой указан в справочнике!
|
|
| |
|