LINUX.ORG.RU

История изменений

Исправление kompospec, (текущая версия) :

В этом сообщении кроме кода есть интересный анализ языков:

Но это не потому что C++ плохой. Для больших многоразовых программ он лучше. Если команда работает - он лучше, хотя хуже, чем Java и C#. Для маленьких одноразовых программ лучше были Перл и Питон, если нет требований по времени. Но Перл теперь заменяют на Раку, а Питон переусложнили.

Поздравляю! Вернусь к теме о суммарном времени написания и выполнения кода. Изначальный код на моём самодельном языке был такой:

import time

def check_combine
    mref res:string len:int
    cref s1:string s2:string
    *len2 @int @size s2
    len = 0
    for *ch in s1
        if len len2
            break
        if ch s2|len
            len + 1
        else
            len = 0
    ifnot len
        res = ""
    else
        *s3 @string s2 @erase 0 len
        res = s1 + s3
    
def main
    *inFile @file @set_mode "r" @open "russian_nouns.txt"
    *lines @array|string 
    lines inFile @getlines
    *maxLen @int 0
    *rusMaxLen @int 0
    *maxRes @string ""
    *startTime @int @time:time
    *counter @int 0
    for *s1 in lines
        for *s2 in lines
            counter + 1
            if s1 s2
                continue
            *len1 @int @size s1
            *len2 @int @size s2
            if < len1 maxLen
                continue
            if < len2 maxLen
                continue
            *len @int 0
            *res @string
            res len @check_combine s1 s2
            if res s1
                continue
            if res s2
                continue
            if > len maxLen
                maxLen = len
                rusMaxLen = maxLen / 2
                *delta @int @time:time - startTime
                *deltaStr @string s2 @erase len
                maxRes = deltaStr + " - " s1 "-" s2
                @print* counter "\t прошло: " delta " секунд, длина: " rusMaxLen ", " maxRes "\n"
    @print* "\n\nРезультат: " rusMaxLen ", " maxRes "\n" 
    *delta @int @time:time - startTime
    @print* "Полное время переборов: " delta
    inFile @close

По длине он 1673 символа против 2457 на C++. То есть примерно в 1,5 раза короче. При том, можно ещё сократить, если сделать простейший вывод типов в конструкторе, а также открыть доступ к длине строки через переменную (это будет плохо с точки зрения инкапсуляции, но для маленьких одноразовых программ такое оправдано).

Но это не потому что C++ плохой. Для больших многоразовых программ он лучше. Если команда работает - он лучше, хотя хуже, чем Java и C#. Для маленьких одноразовых программ лучше были Перл и Питон, если нет требований по времени. Но Перл теперь заменяют на Раку, а Питон переусложнили.

Говорили что Перл старый, ни на что не способный язык. Проверим? (комментарий)

Исправление kompospec, :

В этом сообщении кроме кода есть интересный анализ языков

Поздравляю! Вернусь к теме о суммарном времени написания и выполнения кода. Изначальный код на моём самодельном языке был такой:

import time

def check_combine
    mref res:string len:int
    cref s1:string s2:string
    *len2 @int @size s2
    len = 0
    for *ch in s1
        if len len2
            break
        if ch s2|len
            len + 1
        else
            len = 0
    ifnot len
        res = ""
    else
        *s3 @string s2 @erase 0 len
        res = s1 + s3
    
def main
    *inFile @file @set_mode "r" @open "russian_nouns.txt"
    *lines @array|string 
    lines inFile @getlines
    *maxLen @int 0
    *rusMaxLen @int 0
    *maxRes @string ""
    *startTime @int @time:time
    *counter @int 0
    for *s1 in lines
        for *s2 in lines
            counter + 1
            if s1 s2
                continue
            *len1 @int @size s1
            *len2 @int @size s2
            if < len1 maxLen
                continue
            if < len2 maxLen
                continue
            *len @int 0
            *res @string
            res len @check_combine s1 s2
            if res s1
                continue
            if res s2
                continue
            if > len maxLen
                maxLen = len
                rusMaxLen = maxLen / 2
                *delta @int @time:time - startTime
                *deltaStr @string s2 @erase len
                maxRes = deltaStr + " - " s1 "-" s2
                @print* counter "\t прошло: " delta " секунд, длина: " rusMaxLen ", " maxRes "\n"
    @print* "\n\nРезультат: " rusMaxLen ", " maxRes "\n" 
    *delta @int @time:time - startTime
    @print* "Полное время переборов: " delta
    inFile @close

По длине он 1673 символа против 2457 на C++. То есть примерно в 1,5 раза короче. При том, можно ещё сократить, если сделать простейший вывод типов в конструкторе, а также открыть доступ к длине строки через переменную (это будет плохо с точки зрения инкапсуляции, но для маленьких одноразовых программ такое оправдано).

Но это не потому что C++ плохой. Для больших многоразовых программ он лучше. Если команда работает - он лучше, хотя хуже, чем Java и C#. Для маленьких одноразовых программ лучше были Перл и Питон, если нет требований по времени. Но Перл теперь заменяют на Раку, а Питон переусложнили.

Говорили что Перл старый, ни на что не способный язык. Проверим? (комментарий)

Исходная версия kompospec, :

Поздравляю! Вернусь к теме о суммарном времени написания и выполнения кода. Изначальный код на моём самодельном языке был такой:

import time

def check_combine
    mref res:string len:int
    cref s1:string s2:string
    *len2 @int @size s2
    len = 0
    for *ch in s1
        if len len2
            break
        if ch s2|len
            len + 1
        else
            len = 0
    ifnot len
        res = ""
    else
        *s3 @string s2 @erase 0 len
        res = s1 + s3
    
def main
    *inFile @file @set_mode "r" @open "russian_nouns.txt"
    *lines @array|string 
    lines inFile @getlines
    *maxLen @int 0
    *rusMaxLen @int 0
    *maxRes @string ""
    *startTime @int @time:time
    *counter @int 0
    for *s1 in lines
        for *s2 in lines
            counter + 1
            if s1 s2
                continue
            *len1 @int @size s1
            *len2 @int @size s2
            if < len1 maxLen
                continue
            if < len2 maxLen
                continue
            *len @int 0
            *res @string
            res len @check_combine s1 s2
            if res s1
                continue
            if res s2
                continue
            if > len maxLen
                maxLen = len
                rusMaxLen = maxLen / 2
                *delta @int @time:time - startTime
                *deltaStr @string s2 @erase len
                maxRes = deltaStr + " - " s1 "-" s2
                @print* counter "\t прошло: " delta " секунд, длина: " rusMaxLen ", " maxRes "\n"
    @print* "\n\nРезультат: " rusMaxLen ", " maxRes "\n" 
    *delta @int @time:time - startTime
    @print* "Полное время переборов: " delta
    inFile @close

По длине он 1673 символа против 2457 на C++. То есть примерно в 1,5 раза короче. При том, можно ещё сократить, если сделать простейший вывод типов в конструкторе, а также открыть доступ к длине строки через переменную (это будет плохо с точки зрения инкапсуляции, но для маленьких одноразовых программ такое оправдано).

Но это не потому что C++ плохой. Для больших многоразовых программ он лучше. Если команда работает - он лучше, хотя хуже, чем Java и C#. Для маленьких одноразовых программ лучше были Перл и Питон, если нет требований по времени. Но Перл теперь заменяют на Раку, а Питон переусложнили.

Говорили что Перл старый, ни на что не способный язык. Проверим? (комментарий)