Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Заблокирован
26.07.2025, 07:50
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от testuser2 Посмотреть сообщение
в Хроме не понял как пользоваться консолью
Надо разрешить вставку из буфера и написать в консоли allow pasting. Или же набирать код руками прямо в консоли.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.07.2025, 07:50
Ответы с готовыми решениями:

Какой язык программирования лучше? (2)
Продолжение темы. Начало

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

Какой язык программирования лучше для создания игры???
Какой язык программирования лучше для создания игры, С++ или С#???

594
1409 / 868 / 93
Регистрация: 08.02.2017
Сообщений: 3,702
Записей в блоге: 2
26.07.2025, 10:38
Хром
3524577 77.60000000149012

Добавлено через 39 секунд
Надо еще алгоритм Левенштейна потестить )

Добавлено через 2 часа 14 минут
vba
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Private Sub LevenshteinDistanceTest()
    Dim i&, j&, Ub&, Dist&, comparisons&, t!
    Dim sArInp() As String
    sArInp = Split( _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeeeee ffffffffffffff ggggggggggg hhhhhhhhhhhhhhhhhhhhhhhhhhhhh iiiiiiiiiiiiiiiiiiiiiiiiiiiii jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk llllllllllllllllllllllllllllllllllllllllllllll mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn ooooooooooooooooooooooooooooooooo pppppppppppppppppppppppppppppppppppppppppp qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq rrrrrrrrrrrrrrrrrrrrrrrrrrrrr ssssssssssssssssssssssssssssss tttttttttttttttttttttttttt uuuuuuuuuuuuuuuuuuuuuuuuu vvvvvvvvvvvvvvvvvvvvvvvvvvvvv wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 1234567890 " & _
"QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890 mnxbckfjquwhduywetdftfqrcfgzbxmcsdlsppweuouhftvjcsmnbsdvuqtfvcjbxmcnbkaoqwerpweiurigjhdfjbmsbjgqiuyeiruyoisbnsvuyfguweygrhoaiosjdkjhfbsjhdvfkqjnoi gaywgeudgaewytfvajsdvfjahsdvfjhsdfjhgsfjhqowiueryiuweytruiyytfyqvhgvzxncbsidfjdflsdfpwoeiriuwheuyfvydtvqyuygbhskdjfbkajbuywgduywegfvsnmwehriygwuerygwerdfjhsdfsdkfhbsjdhfjuavufywefhuwlihfoqwehqrwheiruyuyqgruwieqrhsdjhfbjwhvdfisdufhikquhweifgbwfisdhfksjdhfiwuh ASDFHWERFIWSHHSDFJWERPWFOAHDSDFXMCVNWMERKJQEOQIWRUQIHJSBFSDFKJSDFOWIERIOU werkjhiauwryisydgcfkjsdfkjsjdhfguiyqgtfsdfSDGFDSFGwsrhqwigdeyiwefDFBdkqedfgdFHGHKJiFHTYRGFsefjhwhsgdfjhhjsdfDWEfsdfWEFfbgFGjYuioIOpvbnVBNSDFadfsSDFwegsdgfAWFDFGDFghjTyIGHJREGFsddqwdsdfweaWQAZZSDGgnlpHmHJMgkOYUTDFGSFSDFSDFDHGDFGSDFDGRFjhbjshdgfjhgsdfSDGDFG " & _
"kjsdfkhgwieyfguwsyefgsdfSDFGJSDAKFDSAFIRFYUDSFHSBVXCVBNMSDKFJWOYSDFHKADSDnfsdfjbjshdbfkwjbfksdbfhwbkyguygyfshbcdmnxbvcmnsdkfsdfsdflspflwoekorwueiruygwuygjshbvnbvzcjsuhfdiuhsdfghkwjhdfiwegfjdhsgfbksjhfksdhgfhsdhfghfgfgfsjdjfhkwjehoueuq abcdefghijklmnopqrstuvwxyz thistringisnottoolong howcanwemakeabetterstringforcomparing absfeiihdkkeiurmnslkspoiqwrjlnjna jsfjlqpowiuewriugbsdmfasgdfqsfwwiewurmxbcaslkdjp qwerdsdftffygfuhbuhiok sfhdgafsdhafsdjaweqwueytuqwyefgagsdgfasdfajfgsieufowerpoafposdfmnxbcvjlkhhgdfkjasfguysdfuayfgjhvf ygiuwoqupqowei sjxvkzjha hfgauyiuyrwer sdf dsfgsdfdfg dfgdswefdsdgd ffhfghsdfghsdfeuryiwuyeriudhfmnsbmnbvsgdfkuweifgwefgisdgf sdfskdfhgksugfweriuwersdkfjbsewoir sfdqrieyft sdfnueyrtuwyerowierpoipmvmcxnvmnbsdnfbajeygruywgefugsdbaqwriuweuywiuyer dsfjgfuywegfugsufgqfgdjsdhfjhsdgfhsgdfiweoruoweruwer sdfhyairuywoerfuetuopiufudsvxcbvmsdflksfwpeoriiueief dsfygweurytwueyr sdfshfgwegfisfisdgfowuyeridfs sdfhsdfgsudyfguwyef sdfjsgdfysgdfuwgueyfs " & _
"dfsgdfusgdfiweoriuwqoiru ygdifuwuoerupweurpquerowehmnxcbvmnxbvjcquqyerypeiproweur  fhsdgfygsdfuygsudfgufrpesifgsdfshdfbuwyveugfud fefgiuyegsiufygdfigreoquyarcfdbnmnsbfdlsdfoiweprisdfqbyefg sdfugwuefgusdygfuygwdufytwuqytueryt efsgdvfuysgfdusydfuywguyeryoqurwreiueieieiiii" _
        , " ")
    
    t = Timer()
    
    Dim minDist&: minDist = 1000
    Ub = UBound(sArInp)
    RefTypes2.Initialize
    ' Iterate through all combinations of input strings
    For i = 0 To Ub
        For j = 0 To Ub
            If i <> j Then
                Dist = LevenshteinDistance(sArInp(i), sArInp(j))
                If Dist < minDist Then minDist = Dist
                comparisons = comparisons + 1
            End If
        Next
    Next
    
    t = Timer - t
    Debug.Print comparisons; minDist; t
End Sub
 
Private Function LevenshteinDistance(str1 As String, str2 As String) As Long
    'Input validation
    Dim m&, n&, i&, j&
    m = Len(str1): n = Len(str2)
    If str1 = str2 Then Exit Function
    If m = 0 Then LevenshteinDistance = n: Exit Function
    If n = 0 Then LevenshteinDistance = m: Exit Function
    'Make str1 the shorter string for space optimization
    If m > n Then LevenshteinDistance = LevenshteinDistance(str2, str1)
    
    'Use two rows instead of full matrix
    Dim prevRow&(): ReDim prevRow(m + 1)
    Dim currRow&(): ReDim currRow(m + 1)
    For i = 0 To m
        prevRow(i) = i
    Next
    
    Dim cost&, pStr1 As LongPtr, pStr2 As LongPtr
    iMap1_SA.pvData = StrPtr(str1): iMap1_SA.Bounds.cCount = m 'Len(str1)
    iMap2_SA.pvData = StrPtr(str2): iMap2_SA.Bounds.cCount = n 'Len(str1)
    For j = 1 To n
        currRow(0) = j
        'Calculate minimum of three operations:
        For i = 1 To m
'            If Mid$(str1, i, 1) = Mid$(str2, j, 1) Then cost = 0 Else cost = 1 'очень плохо 5 сек.
            If iMap1(i) = iMap2(j) Then cost = 0 Else cost = 1
            currRow(i) = Min(prevRow(i) + 1, _
                             currRow(i - 1) + 1, _
                             prevRow(i - 1) + cost)
        Next
        For i = 0 To m
            prevRow(i) = currRow(i)
        Next
    Next
    
    LevenshteinDistance = prevRow(m)
End Function
Private Function Min(ByVal a&, ByVal b&, ByVal c&) As Long
    Min = a
    If b < a Then Min = b
    If c < Min Then Min = c
End Function


Добавлено через 1 минуту
js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
(function LevenshteinDistanceTest() {
    // Входные данные в виде одной строки
    const inputString = 
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccccccccccccccccccccccccccccccccc ddddddddddddddd eeeeeeeeeeeeeeeee ffffffffffffff ggggggggggg hhhhhhhhhhhhhhhhhhhhhhhhhhhhh iiiiiiiiiiiiiiiiiiiiiiiiiiiii jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk llllllllllllllllllllllllllllllllllllllllllllll mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn ooooooooooooooooooooooooooooooooo pppppppppppppppppppppppppppppppppppppppppp qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq rrrrrrrrrrrrrrrrrrrrrrrrrrrrr ssssssssssssssssssssssssssssss tttttttttttttttttttttttttt uuuuuuuuuuuuuuuuuuuuuuuuu vvvvvvvvvvvvvvvvvvvvvvvvvvvvv wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 1234567890 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890 mnxbckfjquwhduywetdftfqrcfgzbxmcsdlsppweuouhftvjcsmnbsdvuqtfvcjbxmcnbkaoqwerpweiurigjhdfjbmsbjgqiuyeiruyoisbnsvuyfguweygrhoaiosjdkjhfbsjhdvfkqjnoi gaywgeudgaewytfvajsdvfjahsdvfjhsdfjhgsfjhqowiueryiuweytruiyytfyqvhgvzxncbsidfjdflsdfpwoeiriuwheuyfvydtvqyuygbhskdjfbkajbuywgduywegfvsnmwehriygwuerygwerdfjhsdfsdkfhbsjdhfjuavufywefhuwlihfoqwehqrwheiruyuyqgruwieqrhsdjhfbjwhvdfisdufhikquhweifgbwfisdhfksjdhfiwuh ASDFHWERFIWSHHSDFJWERPWFOAHDSDFXMCVNWMERKJQEOQIWRUQIHJSBFSDFKJSDFOWIERIOU werkjhiauwryisydgcfkjsdfkjsjdhfguiyqgtfsdfSDGFDSFGwsrhqwigdeyiwefDFBdkqedfgdFHGHKJiFHTYRGFsefjhwhsgdfjhhjsdfDWEfsdfWEFfbgFGjYuioIOpvbnVBNSDFadfsSDFwegsdgfAWFDFGDFghjTyIGHJREGFsddqwdsdfweaWQAZZSDGgnlpHmHJMgkOYUTDFGSFSDFSDFDHGDFGSDFDGRFjhbjshdgfjhgsdfSDGDFG kjsdfkhgwieyfguwsyefgsdfSDFGJSDAKFDSAFIRFYUDSFHSBVXCVBNMSDKFJWOYSDFHKADSDnfsdfjbjshdbfkwjbfksdbfhwbkyguygyfshbcdmnxbvcmnsdkfsdfsdflspflwoekorwueiruygwuygjshbvnbvzcjsuhfdiuhsdfghkwjhdfiwegfjdhsgfbksjhfksdhgfhsdhfghfgfgfsjdjfhkwjehoueuq abcdefghijklmnopqrstuvwxyz thistringisnottoolong howcanwemakeabetterstringforcomparing absfeiihdkkeiurmnslkspoiqwrjlnjna jsfjlqpowiuewriugbsdmfasgdfqsfwwiewurmxbcaslkdjp qwerdsdftffygfuhbuhiok sfhdgafsdhafsdjaweqwueytuqwyefgagsdgfasdfajfgsieufowerpoafposdfmnxbcvjlkhhgdfkjasfguysdfuayfgjhvf ygiuwoqupqowei sjxvkzjha hfgauyiuyrwer sdf dsfgsdfdfg dfgdswefdsdgd ffhfghsdfghsdfeuryiwuyeriudhfmnsbmnbvsgdfkuweifgwefgisdgf sdfskdfhgksugfweriuwersdkfjbsewoir sfdqrieyft sdfnueyrtuwyerowierpoipmvmcxnvmnbsdnfbajeygruywgefugsdbaqwriuweuywiuyer dsfjgfuywegfugsufgqfgdjsdhfjhsdgfhsgdfiweoruoweruwer sdfhyairuywoerfuetuopiufudsvxcbvmsdflksfwpeoriiueief dsfygweurytwueyr sdfshfgwegfisfisdgfowuyeridfs sdfhsdfgsudyfguwyef sdfjsgdfysgdfuwgueyfs dfsgdfusgdfiweoriuwqoiru ygdifuwuoerupweurpquerowehmnxcbvmnxbvjcquqyerypeiproweur  fhsdgfygsdfuygsudfgufrpesifgsdfshdfbuwyveugfud fefgiuyegsiufygdfigreoquyarcfdbnmnsbfdlsdfoiweprisdfqbyefg sdfugwuefgusdygfuygwdufytwuqytueryt efsgdvfuysgfdusydfuywguyeryoqurwreiueieieiiii";
    const sArInp = inputString.split(" ");
    
    let t = performance.now();
    
    let minDist = 1000;
    const ArLn = sArInp.length;
    let comparisons = 0;
    let dist = 0
    // Перебираем все комбинации строк
    for (let i = 0; i < ArLn; i++) {
        for (let j = 0; j < ArLn; j++) {
            if (i !== j) {
                dist = levenshteinDistance(sArInp[i], sArInp[j]);
                if (dist < minDist) {
                    minDist = dist;
                }
                comparisons++;
            }
        }
    }
    
    t = performance.now() - t;
    
    console.log(comparisons, minDist, t);
})();
 
function levenshteinDistance(str1, str2) {
  // Input validation
  if (typeof str1 !== 'string' || typeof str2 !== 'string') {
      throw new TypeError('Both arguments must be strings');
  }
 
  // Early termination checks
  if (str1 === str2) return 0;
  if (!str1.length) return str2.length;
  if (!str2.length) return str1.length;
 
  // Make str1 the shorter string for space optimization
  if (str1.length > str2.length) {
      [str1, str2] = [str2, str1];
  }
 
  const m = str1.length;
  const n = str2.length;
 
  // Use TypedArrays for better performance
  let prevRow = new Uint32Array(m + 1);
  let currRow = new Uint32Array(m + 1);
 
  // Initialize the first row
  for (let i = 0; i <= m; i++) {
      prevRow[i] = i;
  }
 
  // Main computation loop
  for (let j = 1; j <= n; j++) {
      currRow[0] = j;
 
      for (let i = 1; i <= m; i++) {
          const cost = str1[i - 1] === str2[j - 1] ? 0 : 1;
          currRow[i] = Math.min(
              prevRow[i] + 1,      // deletion
              currRow[i - 1] + 1,  // insertion
              prevRow[i - 1] + cost // substitution
          );
      }
 
      // Swap rows
      [prevRow, currRow] = [currRow, prevRow];
  }
 
  return prevRow[m];
}


Добавлено через 7 минут
vba
4032 3 2,078125
js (FF)
4032 3 1012
js (Chrome)
4032 3 133.7
В vba я испльзовал дополнительный модуль (без внешних связей) без него выходило 5.29 с использованием стандартных средств т.ск.

Добавлено через 39 секунд
в Хроме там миллисекунды, скажу честно )
0
 Аватар для Beltar
1071 / 512 / 41
Регистрация: 05.05.2022
Сообщений: 3,600
26.07.2025, 10:57
Цитата Сообщение от korvin_ Посмотреть сообщение
Где же эти миллионы мобильных приложений на Делфи?
А ты каждое изучал, на чем написано?

Цитата Сообщение от voraa Посмотреть сообщение
C-Builder вроде существует. Чем он хуже Дельфи?
Для кого и в сравнении с чем? Для желающих писать на C++ все равно надо знать Delphi, т. к. VCL и FMX в основе и билдер дельфовый код вынужден жрать. На Delphi же можно работать, не парясь о C++ больше чем нужно, чтобы WinAPI читать. Я билдер по этой причине считаю почти бесполезным. Сам язык никаких плюсов по сравнению с Delphi уже не дает. Для C++ альтернатив намного больше, т. е. без визуального редактора билдер вообще неинтересен. Плюс билдера разве что можно C++ библиотеки использовать (ну для игр актуально). На билдере нельзя писать компоненты, совместимые с Delphi, а вот написанные на Delphi совместимы с билдером. Т. е. если компоненты делаются для распространения, то билдер просто непригоден.

Вообще я за билдером не очень слежу, но у меня ощущение, что он на правах пасынка, и встречается в разы реже Delphi, опять же, это вопрос к спецам по плюсам, как там у него с соответствием современным стандартам C++.
0
 Аватар для voraa
1299 / 1289 / 191
Регистрация: 21.01.2024
Сообщений: 5,986
26.07.2025, 11:01
Цитата Сообщение от testuser2 Посмотреть сообщение
Js:
3524577 2185
Я не знаю, что за комп у тебя, но результат какой то нереальный
Вот у меня
Хром

Файрфокс


Не 2 сек, а 30 мс

Как просто запустить VBA я не знаю, поэтому на Accsess своял просто форму с кнопкой, по клику запускаю и результат в месаджбокс

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Compare Database
Private Sub FibonacciTest()
    Dim r&, i%, u&, t!
    
    t = Timer
    
    u = 31
    
    For i = 1 To u
        r = r + Fibonacci(i) 'fib(i)
    Next
    
    t = Timer - t
    
   MsgBox " " & t & " seconds"
    
End Sub
 
Private Function Fibonacci(ByVal n As Long) As Long
    If n = 0 Then Exit Function
    If n = 1 Then Fibonacci = 1: Exit Function
    Fibonacci = Fibonacci(n - 1) + Fibonacci(n - 2)
End Function
Private Function fib(ByVal num As Long) As Long
    If num <= 1 Then
        fib = num
    Else
        fib = fib(num - 1) + fib(num - 2)
    End If
End Function
 
Private Sub Кнопка0_Click()
Call FibonacciTest
End Sub
Результат - 1 сек.
1
 Аватар для voraa
1299 / 1289 / 191
Регистрация: 21.01.2024
Сообщений: 5,986
26.07.2025, 11:13
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Только тащут его туда лишь убогие вантузоиды, т.к. линуксоидам С или С++ за глаза хватает!
Тащат туда то, что требуется пользователю - заказчику. Если же ты пишешь исключительно для себя, то можешь использовать, что угодно.
0
 Аватар для Pphantom
2469 / 1615 / 741
Регистрация: 17.03.2022
Сообщений: 5,266
26.07.2025, 11:23
Цитата Сообщение от alecss131 Посмотреть сообщение
Шарп кроссплатформенный и на ваших пингвинах прекрасно работает. Он давно престал быть привязан к одной ос.
Только вот "пингвинятники" об этом не знают...

Я серьезно. Утверждение, что C# "прекрасно работает" под Linux, тут встречается более-менее регулярно, но в реальной жизни это как-то незаметно. Т.е. он, возможно, и работает, но не видно ни использующих его на этой ОС, ни какого-то конкретного написанного на нем софта. Вы знаете какие-нибудь реальные примеры?
1
1409 / 868 / 93
Регистрация: 08.02.2017
Сообщений: 3,702
Записей в блоге: 2
26.07.2025, 11:29
Цитата Сообщение от voraa Посмотреть сообщение
Я не знаю, что за комп у тебя, но результат какой то нереальный
У меня ноут на Win 8.1 под него FF и Chrome уже не обновляются. Есть еще комп с Win10 на хозяйстве, я его как терминальный сервер юзаю, но лень включать.
На vba чтобы быстрей работало нужено добавлять этот секретный модуль. Вообще у vba плохая оптимизация логических операций вроде, поэтому он сильно отстает во втором тесте. Я ранее этот тест выполнял на Twin Basic, у которого одна из целей заменить vba и там быстрее работало, я там конечно оптимизировал все до работы с указателями.
Цитата Сообщение от voraa Посмотреть сообщение
Как просто запустить VBA я не знаю, поэтому на Accsess своял просто форму с кнопкой
Чтобы войти в VBA нужно нажать Alt+F11. Чтобы выполнить процедуру под курсором - F5. Кнопки можно не создавать.
0
Модератор
Эксперт Java
 Аватар для alecss131
2895 / 1401 / 412
Регистрация: 11.08.2017
Сообщений: 4,488
Записей в блоге: 2
26.07.2025, 11:58
Цитата Сообщение от Storm Screamer Посмотреть сообщение
Unreal Engine - бич индустрии игр. Много однотипных игр, как по визуалу (рендеринг Unreal'a виден за версту), так и по игровым механикам. Вишенкой на сем блюде выступает плохое техническое состояние.
Движок вполне себе не плохой, а однотипность игр зависит не от движка, а от разработчиков, то же касается и оптимизации. Просто всем сейчас лишь бы заработать побольше. На нем есть куча интересных, разных и различно выглядящих игр.
Цитата Сообщение от Pphantom Посмотреть сообщение
Т.е. он, возможно, и работает, но не видно ни использующих его на этой ОС, ни какого-то конкретного написанного на нем софта. Вы знаете какие-нибудь реальные примеры?
Язык больше для бэкенда имхо, на счет софта (а конкретно гуи) он вне винды не очень, хотя я и на винде на шарпе не смогу назвать софт. Про то что он используется в юнити не беру в расчет.
0
 Аватар для Pphantom
2469 / 1615 / 741
Регистрация: 17.03.2022
Сообщений: 5,266
26.07.2025, 12:13
Цитата Сообщение от alecss131 Посмотреть сообщение
Язык больше для бэкенда имхо, на счет софта (а конкретно гуи) он вне винды не очень, хотя я и на винде на шарпе не смогу назвать софт. Про то что он используется в юнити не беру в расчет.
Ну вот да, обычно как-то так и получается. Возможность вроде есть (хотя я не назвал бы ее удобной), а фактически это язык одной ОС.
0
1409 / 868 / 93
Регистрация: 08.02.2017
Сообщений: 3,702
Записей в блоге: 2
26.07.2025, 13:01
Нашел старый Фирефокс в закромах
Firefox v20.0.1
Levestain
4032 3 6535.17464368025
Fibonacci
3524577 2218.0075816729222

Добавлено через 9 минут
Получается VBA 2012 (сам Офис 2019, а vba указан как ©2012..) покарал JS 2013
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
26.07.2025, 13:01
Цитата Сообщение от Pphantom Посмотреть сообщение
Утверждение, что C# "прекрасно работает" под Linux
Если обойтись Web или надо gtk# штудировать.
Особенно хреново на gtk# с таблицами - надо Treeview расширять.
А чтобы раскрасить ячейки, надо отдельно усилия прилагать.

Вообще, gtk считаю за неудобную библиотеку.
Qt намного более удачное решение.
0
1409 / 868 / 93
Регистрация: 08.02.2017
Сообщений: 3,702
Записей в блоге: 2
26.07.2025, 14:47
Еще один тест, взятый отсюда. Не знаю как точно его изобразить на js, просто спросил у Яндекс GPT. Выполняется 1 раз показывает секунду, последующие разы уже не выполняется. На VBA выполняется за 0,515625 с.
VB
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Private Type Vector
        x As Single
        y As Single
End Type
Dim Map(1023, 767) As Long
Dim vP As Vector, vD As Vector
 
Private Sub MicleQuitsSpeedTest()
    Dim t!
    t = Timer
    vP.x = 40
    vP.y = 500
    vD.x = 87
    vD.y = -54
    DrawFractal vP, vD
    t = Timer - t
    Debug.Print t
End Sub
 
Private Sub DrawFractal(vPos As Vector, vDir As Vector)
    Dim vP As Vector, vD As Vector
    
    If vDir.x * vDir.x + vDir.y * vDir.y < 0.017 Then Exit Sub
    vP.x = vPos.x + vDir.x
    vP.y = vPos.y + vDir.y
    DrawLine vPos, vP
    
    vD.x = vDir.x * 0.9 - vDir.y * 0.04
    vD.y = vDir.y * 0.9 + vDir.x * 0.04
    DrawFractal vP, vD
    vD.x = vDir.x * 0.15 + vDir.y * 0.24
    vD.y = vDir.y * 0.15 - vDir.x * 0.24
    DrawFractal vP, vD
    vD.x = vDir.x * 0.14 - vDir.y * 0.25
    vD.y = vDir.y * 0.14 + vDir.x * 0.25
    DrawFractal vP, vD
End Sub
Private Sub DrawLine(vP1 As Vector, vP2 As Vector)
    Dim x As Single, y As Single, k As Single, dx As Single, dy As Single
    
    dx = vP2.x - vP1.x
    dy = vP2.y - vP1.y
    If Abs(dx) < Abs(dy) Then
        k = dx / dy
        If vP2.y > vP1.y Then
            y = vP1.y
            x = vP1.x
            While y < vP2.y
                Map(x, y) = &H50BB50
                x = x + k
                y = y + 1
            Wend
        Else
            y = vP2.y
            x = vP1.x
            While y < vP1.y
                Map(x, y) = &H40FF30
                x = x + k
                y = y + 1
            Wend
        End If
    Else
        k = dy / dx
        If vP2.x > vP1.x Then
            x = vP1.x
            y = vP1.y
            While x < vP2.x
                Map(x, y) = &HA0AF20
                y = y + k
                x = x + 1
            Wend
        Else
            x = vP2.x
            y = vP1.y
            While x < vP1.x
                Map(x, y) = &H609F30
                y = y + k
                x = x + 1
            Wend
        End If
    End If
End Sub

JS
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// Определяем структуру Vector
class Vector {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
}
 
// Создаем массив для хранения значений
const MAP_WIDTH = 1024;
const MAP_HEIGHT = 768;
const Map = Array.from({length: MAP_WIDTH}, () => Array(MAP_HEIGHT).fill(0));
 
// Глобальные переменные
let vP = new Vector(0, 0);
let vD = new Vector(0, 0);
 
// Функция для тестирования скорости
function MicleQuitsSpeedTest() {
    const startTime = performance.now();
    
    vP.x = 40;
    vP.y = 500;
    vD.x = 87;
    vD.y = -54;
    
    DrawFractal(vP, vD);
    
    const elapsedTime = (performance.now() - startTime) / 1000; // в секундах
    console.log(`Время выполнения: ${elapsedTime.toFixed(4)} секунд`);
}
 
// Функция рисования фрактала
function DrawFractal(vPos, vDir) {
    const vP = new Vector(vPos.x, vPos.y);
    const vD = new Vector(vDir.x, vDir.y);
    
    if (vDir.x * vDir.x + vDir.y * vDir.y < 0.017) return;
    
    vP.x = vPos.x + vDir.x;
    vP.y = vPos.y + vDir.y;
    DrawLine(vPos, vP);
    
    // Первое ветвление
    vD.x = vDir.x * 0.9 - vDir.y * 0.04;
    vD.y = vDir.y * 0.9 + vDir.x * 0.04;
    DrawFractal(vP, vD);
    
    // Второе ветвление
    vD.x = vDir.x * 0.15 + vDir.y * 0.24;
    vD.y = vDir.y * 0.15 - vDir.x * 0.24;
    DrawFractal(vP, vD);
    
    // Третье ветвление
    vD.x = vDir.x * 0.14 - vDir.y * 0.25;
    vD.y = vDir.y * 0.14 + vDir.x * 0.25;
    DrawFractal(vP, vD);
}
 
// Продолжение функции DrawLine
function DrawLine(vP1, vP2) {
    const dx = vP2.x - vP1.x;
    const dy = vP2.y - vP1.y;
    const k = dx / dy;
    
    if (Math.abs(dx) < Math.abs(dy)) {
        if (vP2.y > vP1.y) {
            let x = vP1.x;
            let y = vP1.y;
            while (y < vP2.y) {
                Map[Math.floor(x)][Math.floor(y)] = 0x50BB50;
                x += k;
                y++;
            }
        } else {
            let x = vP1.x;
            let y = vP2.y;
            while (y < vP1.y) {
                Map[Math.floor(x)][Math.floor(y)] = 0x40FF30;
                x += k;
                y++;
            }
        }
    } else {
        const k = dy / dx;
        if (vP2.x > vP1.x) {
            let x = vP1.x;
            let y = vP1.y;
            while (x < vP2.x) {
                Map[Math.floor(x)][Math.floor(y)] = 0xA0AF20;
                y += k;
                x++;
            }
        } else {
            let x = vP2.x;
            let y = vP1.y;
            while (x < vP1.x) {
                Map[Math.floor(x)][Math.floor(y)] = 0x609F30;
                y += k;
                x++;
            }
        }
    }
}
 
// Инициализация глобальных векторов
vP = new Vector(0, 0);
vD = new Vector(0, 0);
 
// Запуск теста
MicleQuitsSpeedTest();


Добавлено через 15 минут
JS (Chrome): 0.0884 c. что сопоставимо с нативно скомпилированным кодом.
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
26.07.2025, 14:51
Цитата Сообщение от testuser2 Посмотреть сообщение
что сопоставимо с нативно скомпилированным кодом.
Там какой-нибудь Just-in-time compiler прикрутили.
0
 Аватар для voraa
1299 / 1289 / 191
Регистрация: 21.01.2024
Сообщений: 5,986
26.07.2025, 15:05
Цитата Сообщение от testuser2 Посмотреть сообщение
Еще один тест,
ХЗ чего он делает, но у меня в Хроме пишет
Время выполнения: 0.0339 секунд
0
1409 / 868 / 93
Регистрация: 08.02.2017
Сообщений: 3,702
Записей в блоге: 2
26.07.2025, 15:14
У меня на FF 115.26 выполняется за 1.1 сек.
0
 Аватар для voraa
1299 / 1289 / 191
Регистрация: 21.01.2024
Сообщений: 5,986
26.07.2025, 15:25
На десктопе значения прыгают.
От 0.025 до 0.0339 (проц I7 12400)
Но на iPad mini oт 0.018 до 0.024 в Хроме и от 0.025 до 0.03 в Сафари
1
1409 / 868 / 93
Регистрация: 08.02.2017
Сообщений: 3,702
Записей в блоге: 2
26.07.2025, 15:29
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
Там какой-нибудь Just-in-time compiler прикрутили.
Стараются конкурировать с Гуглом видимо

Добавлено через 2 минуты
Цитата Сообщение от voraa Посмотреть сообщение
Но на iPad mini oт 0.018
Аболдеть, даже на айпаде так быстро
0
 Аватар для voraa
1299 / 1289 / 191
Регистрация: 21.01.2024
Сообщений: 5,986
26.07.2025, 15:33
Цитата Сообщение от testuser2 Посмотреть сообщение
Стараются конкурировать с Гуглом видимо
Так это давно во всех браузерах. Правда оптимизация в разные моменты начинают делать.
И из того, что я читал, не думаю, что она тут будет делаться. Что бы браузер оптимизировал функцию в ассемблерный код она должна быть вызвана несколько (читал и про 3 и про 6) тысяч раз.
А файрфокс несколько оптимизаций проводит. Первый раз он выполняет функцию в режиме текстовой интерпретации, потом быстро строит неоптимальный байт-код, Если функцию продолжают вызывать - строит оптимальный байт-код и потом тоже через несколько тысяч вызовов решает оптимизировать ее в нативный код.
0
1409 / 868 / 93
Регистрация: 08.02.2017
Сообщений: 3,702
Записей в блоге: 2
26.07.2025, 15:38
Цитата Сообщение от voraa Посмотреть сообщение
потом тоже через несколько тысяч вызовов решает оптимизировать ее в нативный код.
А принудительно это нельзя как-то делать?
0
 Аватар для voraa
1299 / 1289 / 191
Регистрация: 21.01.2024
Сообщений: 5,986
26.07.2025, 15:56
Цитата Сообщение от testuser2 Посмотреть сообщение
Аболдеть, даже на айпаде так быстро
Ну это последняя (прошлогодняя) модель. 6 ядер 3.78 Ггц (2 ядра) и 2.Ггц (4 ядра).
Он реально быстрый

Добавлено через 2 минуты
Цитата Сообщение от testuser2 Посмотреть сообщение
А принудительно это нельзя как-то делать?
Нет. Браузер не для того, что бы быстро считать. У него куча других задач. Надо быстро показать страницы. И если он будет тратить время на компиляцию большого кода и оптимизацию, то страницу мы не скоро увидим.
Браузер собирает информацию о функциях во время вызовов. Если они постоянно вызываются с аргументами одного типа и тип глобальных переменных, которые используются функцией тоже не меняется, то он сочтет нужным ее компилировать. А если идут постоянные смены, то он не сможет ее нормально скомпилировать - проверки типа переменных сведут на нет эффект от компиляции. К тому же байт-код тоже довольно быстро выполняется.

Добавлено через 13 минут
А на каком то достаточно древнем Самсунге - 0.11 с
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.07.2025, 15:56

Какой язык программирования мне ст0ит учить?
... оканчивю мат. школу, и хочу поступить на программиста. Программирую (неплохо) на Паскале. Что мне нужно? Може С++? Или...?

Какой язык лучше / прибыльнее?
И так, мне 16 лет, седня днем пойду подавать документы в техникум на программиста соответственно. И назрел вопрос какой язык...

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

Какой язык лучше изучать с нуля?
Привет Всем!! Ребята подскажите пожалуйста какой язык лучше изучать с нуля ????? За ответ заранее спасибо!!!

Какой язык лучше изучать C или C++
Всем здравствуйте! Я новичок в программировании(знаю только Паскаль). Сейчас выбираю, какой язык учить: С или С++. Подскажите, пожалуйста,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
380
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru