Вот думаю над этим вопросом. Дело в том, что я как бы уже опоздал с переходом. И думаю дождаться новой версии ВБ (9.0), хотя на сайте МиркоСофта пишут, что оный ВБ будет ставится на ВизуалСтудию 2005 (что собственно и есть .NET), или всеже еще малость подождать?!
Да и еще сможет ли хороший программист (это я не про себя - мне еще до этого звания далеко) скажем за 2 недели перейти на .NET?
Вот думаю над этим вопросом. Дело в том, что я как бы уже опоздал с переходом.
С переходом на .NET нельзя опоздать, эта технология все больши и больше рахвивается..., с другой стороны - не имеет абсолютно никакого значения оставаться на вб6, потому что он с каждым днем стареет и также безвозвратно стареют стереотипы, которыми руководствуются программисты вб6.
И думаю дождаться новой версии ВБ (9.0), хотя на сайте МиркоСофта пишут, что оный ВБ будет ставится на ВизуалСтудию 2005 (что собственно и есть .NET), или всеже еще малость подождать?!
между этими версиями не будет абсолютно никакой разницы за исключением пары каких-нибудь новых библиотек... ты как новичек эту разницу даже не заметишь
Да и еще сможет ли хороший программист (это я не про себя - мне еще до этого звания далеко) скажем за 2 недели перейти на .NET?
хороший программист в чем?
Если в вб6, то как минимум месяц, чтобы более менее начать ориентироваься в .NET, это при том, что он сразу уловит идею ООП
Программист vb6 без проблем перейдет на .нет.
Сложности начнутся, когда человек захочет полезть в апи, да и принципы ООП, как уже сказано, никто не отменял
Я сидел на вб6 пять лет, после чего я освоил .net за неделю.
А может ли VB.NET компилить в Native-code (читсый код). Если да, то я задумаюсь над переходом на него.
В Микрософт хитрые ребята - сами кодят на С++ или чем-то подобном, а остальных программеров отупляют тормозным, но удобным .NETом
Тесты .NET уже проводились здесь не раз, даже интерпретируемый код ПХП его обходит по производительности. Зато проги на .NET можно написать быстро и без проблем. Оно вам надо?
Когда же придумают какой-нибудь Native compiler для VB.NET...
В Микрософт хитрые ребята - сами кодят на С++ или чем-то подобном, а остальных программеров отупляют тормозным
ничего тормознутого в нем нет, просто тестить не умели... Я когда-то сам здесь тему начинал про тормознутость .NET, =D))..., получив результат, что вб6 быстрее .НЕТ раз в 6... но как показали дальнейшие исследования, я просто не умел компилить... - .НЕТ оказался в два раза быстрее вб6 и всего лишь на 10% уступал Анепосредственному вызову АПИ из С++.
А может ли VB.NET компилить в Native-code (читсый код).
всем известно, что .НЕТ компилирует в IL, подобный асму..., который в дальнейшем преобразуется в native-code а это уже получше любого компилирования в него из вб6...
Before the code is run, the IL is compiled into native executable code. And, since this compilation happens by the managed execution environment (or, more correctly, by a runtime-aware compiler that knows how to target the managed execution environment), the managed execution environment can make guarantees about what the code is going to do. It can insert traps and appropriate garbage collection hooks, exception handling, type safety, array bounds and index checking, and so forth.
Тесты .NET уже проводились здесь не раз, даже интерпретируемый код ПХП его обходит по производительности.
всем известно, что .НЕТ компилирует в IL, подобный асму..., который в дальнейшем преобразуется в native-code а это уже получше любого компилирования в него из вб6...
Я советую приводить только факты того или иного, а свою оценку приводить под грифом ИМХО, дабы не разводить флейм.
Dim h As Boolean
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
h = True
Me.Refresh()
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
If h = True Then
Dim Start As Integer = System.Environment.TickCount
For i As Integer = 1 To 10000
e.Graphics.DrawLine(Pens.Plum, 0, 0, 100, 100)
Next i
MsgBox(System.Environment.TickCount - Start)
h = False
End If
End Sub
End Class
Так как я в свое время увлекался графикой, то меня интересовала именно эта сторона .NET, и мне была важна скорость именно вывода графики. Вышеприведенный код чертит 10000 линий, от точки А(0,0) к точке В(100,100)
Результат: 15мс.
тоже самое на вб6:
Option Explicit
Dim i As Integer
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Sub Command1_Click()
Dim j As Long
j = GetTickCount
For i = 1 To 10000
Line (0, 0)-(1500, 1500), 5
Next i
MsgBox GetTickCount - j
End Sub
Правильнее на VB6.0 будет:
Dim i As Long
И зря ты его закинул в паблик. Он должен находиться в процедуре.
Кстати я VB6.0 с .NET не сравнивал. VB6.0 использует msvbvm60.dll, что тоже его очень тормозит.
На АПИ чуть быстрее стал.
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function LineTo Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function MoveToEx Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByRef lpPoint As Long) As Long
Private Sub Command1_Click()
Dim i As Long
Dim i2 As Long
Dim j As Long
j = GetTickCount
For i2 = 0 To 32766
For i = 0 To 15
MoveToEx hdc, 0, 0, 0
LineTo hdc, 100, 100
Next i
Next
MsgBox GetTickCount - j
End Sub
Power Basic вне конкуренции по быстроте кода среди бейсиков
#Compile Exe
#Register None
#Dim All
%ID_BUTTON = 201
Global hDlg As Dword
Declare Function GetTickCount Lib "kernel32.dll" Alias "GetTickCount" () As Dword
Declare Function LineTo Lib "gdi32.dll" Alias "LineTo" (ByVal hdc As Dword, ByVal x As Dword, ByVal y As Dword) As Dword
Declare Function MoveToEx Lib "gdi32.dll" Alias "MoveToEx" (ByVal hdc As Dword, ByVal x As Dword, ByVal y As Dword, ByRef lpPoint As Dword) As Dword
Declare Function GetWindowDC Lib "user32.dll" Alias "GetWindowDC" (ByVal hwnd As Dword) As Dword
%WM_COMMAND = &H111
%WS_EX_TOOLWINDOW = &H80&
%WS_EX_TOPMOST = &H8&
%WS_SYSMENU = &H80000
%SS_CENTER = &H1&
Sub Command1_Click()
Dim i As Dword
Dim i2 As Dword
Dim j As Dword
Dim hDC As Dword
hdc = GetWindowDC(hDlg)
j = GetTickCount
! MOV i2, 32766
lb1:
! MOV i, 15
! DEC i2
! CMP i2,0
! JE lb3
lb2:
! DEC i
! CMP i,0
! JE lb1
MoveToEx hdc, 0, 0, ByVal 0
LineTo hdc, 100, 100
! JMP lb2
! JMP lb1
lb3:
MsgBox Str$(GetTickCount - j)
End Sub
CallBack Function DlgProc
Select Case CbMsg
Case %WM_COMMAND
If CbWParam = %ID_BUTTON Then Command1_Click()
End Select
End Function
Function PBMain
 ialog New 0, "Bench",,, 300, 40, %WS_SYSMENU, %WS_EX_TOPMOST Or %WS_EX_TOOLWINDOW To hDlg
Control Add Button, hDlg, %ID_BUTTON, "Bench", 5, 10, 290, 15, %SS_CENTER
 ialog Show Modal hDlg Call DlgProc
End Function