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

Тестовое задание

Write a python function that builds a tree based on a list of tuples of id (parent id, offspring id),
where None is the id of the root node.

How this should work:

source = [
(None, 'a'),
(None, 'b'),
(None, 'c'),
('a', 'a1'),
('a', 'a2'),
('a2', 'a21'),
('a2', 'a22'),
('b', 'b1'),
('b1', 'b11'),
('b11', 'b111'),
('b', 'b2'),
('c', 'c1'),
]

expected = {
'a': {'a1': {}, 'a2': {'a21': {}, 'a22': {}}},
'b': {'b1': {'b11': {'b111': {}}}, 'b2': {}},
'c': {'c1': {}},
}

assert to_tree(source) == expected

И мне вдруг подумалось, а как хайповый chatGPT мог бы справиться с таким полуреальным, но вполне полезным для меня, заданием? Мысль пришла, а руки уже искали информацию, как прорваться к chatGPT из России. Спустя какое-то время прорвался и прям в лоб, ничего не меняя в тексте задания, отправляю тестовое и с интересом жду.

Довольно быстро chatGPT пишет мне ответ со своим решением и даже что-то объясняет.

Самое первое решение
def to_tree(source):
    tree = {}
    for parent, offspring in source:
        if parent is None:
            tree[offspring] = {}
        else:
            tree[parent][offspring] = {}
    for parent, offspring in source:
        if parent is not None:
            tree[parent][offspring] = to_tree(
                [(p, o) for p, o in source if p == offspring]
            )
    return tree

Выглядит на первый поверхностный взгляд правдоподобно, смущают некоторые моменты, но это вполне код. Запускаю этот код в Python и естественно он не работает. С чувством превосходства человеческого интеллекта над бездушной машиной, пытаюсь выдавить еще что-то из chatGPT и прошу проаннотировать типы. Он более-менее справляется. Прошу оценить алгоритмическую сложность. В целом, он правильно оценивает, как O(n*n) и даже дает советы, как улучшить - используй, говорит, специализированные структуры данных.

Я тоже не промах, и прошу его самого улучшить код с точки зрения алгоритмической сложности. И это чудо выдает мне что-то очень странное.

Практически бессмысленный код
def to_tree(source: List[Tuple[str, str]]) -> Dict[str, str]:
    # Initialize an empty tree
    tree = {}
    
    # Iterate through the source list and add the nodes to the tree
    for parent, offspring in source:
        tree[offspring] = parent
    
    # Return the tree
    return tree

После этого спешу к другу разработчику, чтобы за глаза песочить chatGPT за криворукость и тупость. В процессе снисходительного обсуждения мы приходим к мысли, что вообще-то работа разработчика на половину состоит из правильной постановки задачи. С этой мыслью и с чуть угасшим чувством собственного превосходства, я решил чуть поправить решение chatGPT используя его же совет по использованию специальных структур данных.

Мои правки
from typing import List, Tuple, Dict, Optional, Any


def to_tree(data: List[Tuple[Optional[str], str]]) -> Dict[str, Any]:
    children: Dict[str, Any] = {o: {} for _, o in data}
    tree: Dict[str, Any] = {}
    for parent, offspring in data:
        if parent is None:
            tree[offspring] = children[offspring]
        else:
            children[parent][offspring] = children[offspring]
    return tree

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

Попросил написать тесты - он написал несколько неплохих. Попросил написать тесты с неформатными входными данными - тоже напридумывал кое-что. Попросил обновить решение, чтобы тесты с неформатными входными данными проходили - он снова дописал блоки кода. То же самое мы с ним провернули с разными другими пограничными условиями. Конечно, что-то приходилось ему подправлять по-дружески. Мы ж друзья стали. Ну и в конце попросил его подробно описать алгоритмическую сложность по времени и по памяти, с чем он тоже справился.

Конечный исходный код
from typing import List, Tuple, Dict, Optional, Any


# Time complexity:
# The time complexity of this function is O(n), where n is the number of tuples in the input list. The reason is that
# the function iterates over the input list once and performs a constant number of
# operations (a constant number of type and value comparisons) on each element of the list. Therefore,
# the total number of operations is directly proportional to the number of elements in the list, which makes
# the time complexity O(n).
#
# Space complexity:
# The space complexity of this function is O(n). The reason is that the function creates two data structures: tree and
# children both with the same size as the number of tuples in the input list, to store the tree and
# children of the each node. Therefore, the space complexity is directly proportional to the number of
# elements in the input list, which makes the space complexity O(n).
def to_tree(data: List[Tuple[Optional[str], str]]) -> Dict[str, Any]:
    if not data:
        return {}
    if not isinstance(data, list):
        raise ValueError("Input data must be a list")
    if not all(map(lambda x: isinstance(x, tuple), data)):
        raise ValueError("Input data must be a list of tuples")
    if not all(map(lambda x: len(x) == 2, data)):
        raise ValueError("Each tuple in input data must have exactly two elements")
    if not all(map(lambda x: (isinstance(x[0], str) or x[0] is None) and isinstance(x[1], str), data)):
        raise ValueError("Parent and offspring must be of type str, parent can be None")
    check_offspring_duplicates(data)

    children: Dict[str, Any] = {o: {} for _, o in data}
    tree: Dict[str, Any] = {}
    for parent, offspring in data:
        if parent is None:
            tree[offspring] = children[offspring]
        else:
            children[parent][offspring] = children[offspring]
    return tree


# Time complexity of this function is O(n) as it also iterates over the input list once, and does a constant number of
# dictionary operations on each iteration, where n is the number of tuples in the input list.
#
# Space complexity of this function is O(n) too, where n is the number of unique offsprings in the input data, because
# it's creating a dictionary to store the count of each offspring and the size of the dictionary will be equal to the
# number of unique offsprings in the input data.
def check_offspring_duplicates(data: List[Tuple[Optional[str], str]]):
    offspring_count = {}
    for _, offspring in data:
        if offspring in offspring_count:
            offspring_count[offspring] += 1
            raise ValueError(f"Offspring {offspring} appears more than once in the input data")
        else:
            offspring_count[offspring] = 1


# Tests

def test_to_tree():
    source = [
        (None, 'a'),
        (None, 'b'),
        (None, 'c'),
        ('a', 'a1'),
        ('a', 'a2'),
        ('a2', 'a21'),
        ('a2', 'a22'),
        ('b', 'b1'),
        ('b1', 'b11'),
        ('b11', 'b111'),
        ('b', 'b2'),
        ('c', 'c1'),
    ]

    expected = {
        'a': {'a1': {}, 'a2': {'a21': {}, 'a22': {}}},
        'b': {'b1': {'b11': {'b111': {}}}, 'b2': {}},
        'c': {'c1': {}},
    }

    assert to_tree(source) == expected


def test_to_tree_with_invalid_inputs():
    # Test with empty input
    assert to_tree([]) == {}

    # Test with non-tuple input
    try:
        to_tree(['a', 'b'])
    except ValueError as v:
        assert str(v) == "Input data must be a list of tuples"
    else:
        assert False

    # Test with tuple input with wrong number of elements
    try:
        to_tree([(None,), ('a', 'b', 'c')])
    except ValueError as v:
        assert str(v) == "Each tuple in input data must have exactly two elements"
    else:
        assert False


def test_input_type():
    # Test input with non-string parent and offspring
    try:
        to_tree([(None, 1), (1, 2)])
    except ValueError as v:
        assert str(v) == "Parent and offspring must be of type str, parent can be None"
    else:
        assert False

    try:
        to_tree([(None, '1'), ('1', 2)])
    except ValueError as v:
        assert str(v) == "Parent and offspring must be of type str, parent can be None"
    else:
        assert False

    try:
        to_tree([(None, None)])
    except ValueError as v:
        assert str(v) == "Parent and offspring must be of type str, parent can be None"
    else:
        assert False

    # Test input with string parent and offspring
    assert to_tree([(None, '1'), ('1', '2')]) == {'1': {'2': {}}}


def test_duplicate_nodes():

    try:
        to_tree([(None, '1'), ('1', '2'), ('1', '2')])
    except ValueError as v:
        assert str(v) == "Offspring 2 appears more than once in the input data"
    else:
        assert False

    try:
        to_tree([(None, '1'), ('1', '2'), ('2', '2')])
    except ValueError as v:
        assert str(v) == "Offspring 2 appears more than once in the input data"
    else:
        assert False


test_to_tree()
test_input_type()
test_to_tree_with_invalid_inputs()
test_duplicate_nodes()


Остались последние штрихи, но тут chatGPT устал - слишком много запросов в час, так и сказал.

Что ж, в таком виде я решение и отправил работодателю. Жду теперь ответа.

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

UPD: ответ от работодателя

Есть новости! Работодатель ответил, что в целом код прошел ревью, но были какие-то сомнения в теме того, что позиция не предусматривает ML/AI задач, к которым я в целом стремлюсь. Но, учитывая это, предложили следующий этап интервью. Так что мы с chatGPT успешно прошли этот нулевой этап!

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

А в целом хочу еще и публично извинится перед работодателем за этот эксперимент и надеюсь в нем будет больше пользы, чем шутки.

UPD: комментарий работодателя по итогам статьи

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

Отвечает создатель тестового:

Это, конечно, лучше чем 90% присылаемых решений, но всё равно они даже вместе с роботом родили шляпу. Кстати, чтоб пользоваться тем, что даёт бот, надо уметь читать много чужого кода, а это сложнее, чем писать мало своего.

От себя как HR добавлю, что если бы вы предупредили об использовании GPT, мы бы, скорее всего, оценили искренность. В ином случае даже на собеседование не позвали бы. Начинать отношения с обмана - такое себе :)

Комментарии (108)


  1. Nilomar
    11.01.2023 22:36
    +18

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

    Уровень абстракции вырос, наши возможности выросли, и заодно теперь человеческий язык стал тоже языком программирования. Теперь мы официально колдуем

    Всё по Кларку - Любая достаточно развитая технология неотличима от магии

    Мы просто сделали ещё один маленький шаг, но немного наглядный шаг в этом направлении

    Для разработчиков это по востребованности ничего не изменит, это одинаково усилит всех, потому по прежнему скиллы проектирования систем будут нужны ещё больше


    1. shnegs
      12.01.2023 08:57
      +7

      Угу. Автоматизировали поиск по Stackoverflow...


      1. NNikolay
        13.01.2023 06:27

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


  1. pathofpw
    11.01.2023 22:37

    Да, оно пока туповатое, но уже полезное, когда надо побыстрому накидать что-то типа "fastapi based aiohttp lxml google scraper".
    А задачка для тестового слабовата.


    1. breninsul
      13.01.2023 14:19

      Мне кажется скорее бесполезна. Нз чем фирма занимается, но если они строят деревья - то явно занимаются чем-то не тем. Вот в Фэйсбук набирают со знанием алгоритмов, и что, как работает, всем нравиться?) Как по мне, наоборот желание пробовать новое кандидатом похвально


  1. Wesha
    11.01.2023 22:38
    +37

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

    Вооооооот, именно!

    С этим вашим ИИ просто появляется очередное звено: в самом начале разработчик писал код низкого уровня (на ассемблере), который транслировался в машинный код, который исполнялся процессором. Потом разработчик стал писать код на языке высокого уровня, который транслировался в код низкого уровня, который транслировался в машинный код, который исполнялся процессором. Теперь разработчик нового уровня будет писать очень-очень подробное техническое задание, которое транслируется в код на языке высокого уровня, который транслируется в код низкого уровня, который транслируется в машинный код, который исполняется процессором....


    1. Nilomar
      11.01.2023 22:41
      +1

      Именно так. Вырос уровень абстракции, выросли наши возможности


      1. Wesha
        11.01.2023 22:48
        +29

        выросли наши возможности

        Ага, как в той шутке — "хороший внедорожник застрянет там, куда плохой не доедет", поэтому πз шкандыбать придётся не за "Беларусью", а за "Кировцем".

        Иными словами,


        1. Nilomar
          11.01.2023 22:54

          А когда это останавливало представителей нашего вида с момента его рождения? Это встроенная в нас директива нашей эволюционной стратегии

          Потому индустрия внедорожников и существует


        1. RranAmaru
          13.01.2023 22:53

          Как бы не получилось наоборот. Разработчик пишет код, а ИИ, на правах линтера, будет докапывается до каждой строчки. Работа как раз ИИ по плечу.


          1. Wesha
            13.01.2023 23:05

            Кажется, я даже этот ИИ знаю, запускается командой gcc -Wall -Wextra!


    1. aaabramenko
      11.01.2023 22:54
      +5

      Теперь разработчик нового уровня будет писать очень-очень подробное техническое задание, 

      Периодически может возникать проблема как с делегированием людям: проще сделать самому, чем объяснять, что нужно, с переделками в несколько итераций. Но да, "оно" молча и спокойно переделает столько раз, сколько скажут, в отличие от живого коллеги.


      1. Wesha
        11.01.2023 23:29

        проще сделать самому, чем объяснять, что нужно,

        В целом да.

        Но я вообще-то говорил про то, что логика работы не изменилась: по-прежнему объясняешь компьютеру, что делать. Просто зменилось то, как именно это делаешь: раньше объяснял на формальном языке, принципиально не допускающем неоднозначностей и двойных трактовок — а теперь будем объяснять на живом великоруанглийском языке со всеми его "прелестями" (record changes — это "запиши изменения" или "запись изменяется"?)


        1. Tomvish
          11.01.2023 23:52
          -10

          Мне одному кажется, что выбор английского, как основного для программирования, большая ошибка?

          Склоняюсь к "недобросовестной конкуренции", что строго под термин "ошибка" не подпадает.

          Как исправляются "не ошибки"?


          1. Wesha
            12.01.2023 01:14
            +3

            В случае формального языка — я очень рад выбору английского. Потому что когда я читаю код, то вместо некого подобия Рапиры (ПРОЦ СТАРТ(); ВЫВОД: "ЗДРАВСТВУЙ, МИР!"; КНЦ;), я вижу нечто марсианско-непонятное (условно говоря, が(); ら"blahblah"; ひ), и я просто выучил, что в начале любой функции стоит , в конце , а — это "напечатай вон то", при этом не отвлекаясь на смысл. Ну, практически как в старой хохме про называние цвета, которым написаны буквы — а не того, название которого этими буквами написано.


            1. a1mir
              12.01.2023 08:26
              +7

              Как год имевший дело с 1С, могу сказать, что уже через неделю перестаёшь обращать внимание на обычный смысл слов и думаешь о них чисто как о токенах в составе программы


            1. apxi
              12.01.2023 11:52
              +2

              С английским кодом точно также.


              1. Wesha
                13.01.2023 03:37

                Что конкретно "точно так же"?


                1. apxi
                  13.01.2023 12:04

                  Чем так сильно отличается?

                  ПРОЦ СТАРТ(); ВЫВОД: "ЗДРАВСТВУЙ, МИР!"; КНЦ;

                  от

                  PROC START(); PRINT: "ЗДРАВСТВУЙ, МИР!"; END;


                1. zif
                  13.01.2023 13:48

                  Какой-нибудь begin - end, воспринимается так же как и Ваш пример при знании английского языка.


                  1. Wesha
                    13.01.2023 23:17

                    Может, Вы какой-то особенный, но вот у меня — не воспринимается. Слово НАЧАЛО у меня в мозгу воспринимается именно как слово, а begin — как "особый иероглиф".

                    Возможно, потому, что регулярно использовать английский я стал позже, чем программировать.


            1. Tomvish
              13.01.2023 02:36
              -2

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

              Судя по тому, как до нас дошла, скажем, нотная запись, создаётся впечатление, что создание "цеховых тайн" было некоторой традицией в прошлом. Может даже необходимостью. Несколько лишних конвертаций из одного типа записи в следующий и обратно. Все кто привык - начинают это защищать, вместо того чтоб взглянуть свежим взглядом. Либо сразу упираются в "невозможность это изменить", и отмахиваются.

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

              "В случае формального языка — я очень рад выбору английского. "

              А не произошла ли тут "типичная подмена понятий"? Рады абстрагированию, или вы рады вот этому безобразию?


              1. lair
                13.01.2023 04:55
                +2

                Судя по тому, как до нас дошла, скажем, нотная запись, создаётся впечатление, что создание "цеховых тайн" было некоторой традицией в прошлом.

                В смысле "дошла"? Нотная запись со временем изменялась, и достаточно существенно. Вы о чем сейчас?


                1. Tomvish
                  13.01.2023 15:16

                  У изменения есть цель, даже если не названная. Так вот в списке этих целей, некоторые цели явно заблокированы. То есть менять можно, но кроме достижения определённых результатов. Подобные Табу наблюдаются в разных областях. Табу не видны, но результаты их хорошо различимы.

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

                  Но даже после этого выставлять инициатора нарушения табу "редиской" - считается хорошим тоном. Сам факт преодоления ничтожен, до тех пор пока не названа причина -- табу, незримо продолжающее своё действие. Только названное табу можно приостановить или убрать совсем.

                  На обсуждение темы -- табу нет. Даже приводятся примеры тех, кто задолго до этого уже пробовал преодолеть, но примеры как доказательство "нехорошести" автора. Можно назвать это рационализациями табу. Табу-то на изменения, а не на разговоры об этом.

                  А ведь в этом примере, автор внёс совершенно незначительные изменения, но слишком результативные именно в "нежелательном" направлении. В изменение результата. Табу -- не закон и не запрет. Табу обозначает, что табуированные действия вызовут спонтанную реакцию отторжения и высмеиванию у большинства. Рационализации же, никак не затрагивают причину такой реакции, только оправдывают уже происходящее.

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

                  Примерно то же происходит и в других местах.


                  1. lair
                    13.01.2023 15:21

                    некоторые цели явно заблокированы.

                    Это какие?

                    Возьмём несколько страниц характерной реакции на действия нарушающие табу.

                    О каком табу здесь идет речь?

                    А ведь в этом примере, автор внёс совершенно незначительные изменения,

                    Какие незначительные изменения внес автор?


                    1. Tomvish
                      13.01.2023 20:00

                      О каком табу здесь идет речь?

                      Где "здесь"?


                      1. lair
                        13.01.2023 20:33
                        +1

                        В вашей фразе "Возьмём несколько страниц характерной реакции на действия нарушающие табу."


                      1. Tomvish
                        14.01.2023 01:37
                        -1

                        Характерная реакция не во фразе, а на форуме по ссылке.

                        На полном серьёзе вопрос про Где? -- это вопрос пространства видимости. Я ведь не знаю, что вы видите там на форуме. Если вам не видно действие там табу, то ответ такой:

                        О каком табу здесь идет речь?

                        Видимо о том под влиянием которого вы находитесь и потому не видите.

                        некоторые цели явно заблокированы.

                        Это какие?

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

                        Простое внесение информации о (названии или описании) табу внутрь его влияния не даёт ничего. Это становится пустыми фразами. Так не работает. Надо выйти. Это легко.

                        Табуированные* цели -- выведенные из пространства видимости, так что обычно их даже не выбирают. Желаешь, что-то поменять -- пожалуйста меняй так, чтоб ничего не поменялось. Это не спасает от изменений, но тормозит.

                        Табуированные* -- неназываемые внутри пространства видимости. Не потому что назвать нельзя, а потому, что это бессмысленно, пока держишься за навязанный иллюзорный контекст.

                        Соответственно и :

                        Ну, я имел в виду "цивилизованные" - показать достоинства себя и указать на недостатки конкурентов. А вы?..

                        Основное применение табу - как раз ограничение видимости вне скобок ("цивилизованности"), где в критических случаях применяются недокументированные методы. Обсуждение которых, высмеивается и ставит обсуждающего на грань "изгнания". При этом размеры скобок могут порой меняться под задачу.


                      1. lair
                        14.01.2023 01:41

                        Характерная реакция не во фразе, а на форуме по ссылке.

                        Я спрашиваю не про реакцию, а про табу. Про какое конкретно табу вы говорите?

                        Основное применение табу - как раз ограничение видимости вне скобок

                        Вы, мне кажется, понимаете по "табу" что-то свое. Я ниже уже приводил определение.

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

                        Каких именно качественных изменений? Почему вы считаете, что эти изменения заблокированы? Кем?


                    1. Tomvish
                      14.01.2023 01:42

                      Какие незначительные изменения внес автор?

                      Всего лишь слоги для озвучки полутонов.


                      1. lair
                        14.01.2023 01:54

                        Если эти изменения такие, как вы выражаетесь, "незначительные", то почему они могут нести такие существенные последствия, как заявляет автор методики? И почему это "незначительное" изменение претендует, не мало говоря, на "Стратегию Возрождения Российской Культуры" (цитата из видео по ссылке)?

                        (Признаюсь честно, впрочем, мне изменения, которые нарушают структуру лада, не кажутся "незначительными"; но пока мы находимся в рамках чистого сольфеджирования без тональности, такого нарушения не происходит. Вопрос в том, что делать, когда мы выходим за пределы сольфеджирования.)

                        (Еще я хочу сказать, что лично я по ссылке наблюдаю феномен, который у нас на уроках называли "гудошничеством" - когда ученик пропевает правильные названия нот, но они все на одной высоте, или на отличающихся, но фундаментально неправильных высотах. Но это моя личная оценка, я сольфеджио не преподаю больше пятнадцати лет, и могу ошибаться.)


                      1. Tomvish
                        14.01.2023 15:29

                        Если эти изменения такие, как вы выражаетесь, "незначительные", то почему они могут нести такие существенные последствия, как заявляет автор методики?

                        Если вы преподавали сольфеджио, то может быть вам незаметна разница. Ведь ваши ученики тоже "так могут, хоть и не так быстро". А мне, самостоятельно знакомящемуся с "этой наукой", просто потому, что я вижу, что мои импровизации ограничены каким-то объёмом, выйти за который не хватает знаний. Да и совместная игра возможна лишь, если подстраиваются ко мне, что конечно смешно. Или управляемый оркестр в моей голове так и останется в моей голове, если не найти способ его записать. Для этого мне нужно освоить существующую систему сломать мозг об существующую систему. Заставить его работать по предложенной схеме. При этом я вижу, как ломаются и способности, ради которых я пытаюсь это освоить. Лучше я отложу, ведь способности универсальны, а результаты именно в музыке частный случай.

                        Единицы, которые смогли освоить и не сломаться - их имена знает весь мир. Но почему их так мало?

                        Зато есть армии исполнителей, с которыми потом бьются дирижёры. Усложнённая "цеховая тайна" сыграла против музыки. Ведь деградировал заказчик - слушатель. Во времена хороводов и самодельных свирелей, минимальной экспертностью обладал каждый, кто участвовал и сам пел. Пели все. Это не было элитарным знанием. Вот стало.

                        И почему это "незначительное" изменение претендует, не мало говоря, на "Стратегию Возрождения Российской Культуры" (цитата из видео по ссылке)?

                        Не знаю, -- причуда автора. Или заявление о намерениях. А может "место для придирок", чтоб не мешали работать - чем не задача?.

                        С другой стороны, если порог вхождения вместо 8 лет зубрёжки, составляет несколько уроков, при этом вам не предлагаются как неотъемлемая основа понимания, противоестественные множественные конвертации, съедающие ресурс внимания и блокирующие большинству способность ещё и творчески этим распоряжаться, то вполне себе путь к Возрождению Культуры. Человек способный самостоятельно играть и сочинять музыку иначе относится к тому, что услышит "по радио". Если это будет легко достижимо и таких людей будет больше, то и качество "профессионалов" изменится.


                      1. lair
                        14.01.2023 16:03

                        Если вы преподавали сольфеджио, то может быть вам незаметна разница. Ведь ваши ученики тоже "так могут, хоть и не так быстро".

                        Да нет, как раз разница "могут быстрее" или "могут медленнее" - это как раз наблюдаяемая и важная для преподавателя разница.

                        Для этого мне нужно освоить существующую систему сломать мозг об существующую систему. Заставить его работать по предложенной схеме. При этом я вижу, как ломаются и способности, ради которых я пытаюсь это освоить. Лучше я отложу,

                        А что или кто вам мешает освоить хроморяд и пользоваться им? Если вы думаете, что он вам поможет, то и пожалуйста.

                        Единицы, которые смогли освоить и не сломаться - их имена знает весь мир. Но почему их так мало?

                        Вообще-то, музыкантов совсем не мало.

                        Во времена хороводов и самодельных свирелей, минимальной экспертностью обладал каждый, кто участвовал и сам пел. Пели все.

                        Даже если пели все, то вряд ли они пользовались системой, придуманной в конце ХХ века. Так может не в этом дело-то?

                        Это не было элитарным знанием. Вот стало.

                        Маленькое уточнение: пение - не знание. Пение - навык. Который растет из многократного повторения. Почему люди стали меньше петь - это любопытный вопрос, конечно.

                        С другой стороны, если порог вхождения вместо 8 лет зубрёжки, составляет несколько уроков

                        Порог вхождения "во что"?

                        вам не предлагаются как неотъемлемая основа понимания, противоестественные множественные конвертации

                        ...вы никогда не задумывались, что у этих конвертаций может быть цель?

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

                        Почему? Она же написана такими же людьми, способными самостоятельно играть и сочинять.

                        Если это будет легко достижимо и таких людей будет больше

                        ...что конкретно будет легко достижимо?

                        качество "профессионалов" изменится.

                        Вопрос только, в какую сторону.

                        Знаете, я вчера весь вечер искал реальные результаты ее работы - не уроки, а именно результаты. Во-первых, заметил любопытное: там повторяются буквально несколько примеров, то есть в посте этого, 2022 года, цитируется пост 2011 года, в котором рассказывается об опыте 2003 года. Обновляющихся примеров я не нашел.

                        А во-вторых, те несколько примеров, которые я нашел... плохи. Это, несомненно, моя субъективная оценка, я даже не буду пытаться подвести под нее объективные критерии, но для моих задач ее достаточно: у меня есть некоторый музыкальный кругозор, в который входит нравящаяся мне музыка (растущая, кстати, из очень разных методических основ). Музыка, которую я слышу от учеников предлагаемого метода, мне не нравится. Как следствие, я ни отдал бы туда своего ребенка, ни стал бы советовать кому-то другому отдать туда ребенка учиться.

                        Так что вот вам реакция на результаты.


                      1. Tomvish
                        14.01.2023 15:45

                        почему они могут нести такие существенные последствия, как заявляет автор методики? 

                        В принципе не важно, что он заявляет, если есть возможность проверить результаты сразу. У вас как я понял, этого "чистого листа" для проверки нет, но есть другие возможности -- опыт работы с другими. Сможете ли вы протестировать методику на ком-то отдельно от предыдущего опыта?


                      1. lair
                        14.01.2023 16:00

                        В принципе не важно, что он заявляет, если есть возможность проверить результаты сразу.

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

                        но есть другие возможности -- опыт работы с другими.

                        Опыт работы - это не возможность проверки. Если бы вы читали внимательно, вы бы увидели, что я уже не преподаю.


                  1. lair
                    13.01.2023 21:14
                    +1

                    Табу -- не закон и не запрет.

                    Вообще-то, табу - это как раз запрет: "Табу́ — строгий запрет на совершение какого-либо действия"


                    1. Tomvish
                      14.01.2023 03:36

                      Вообще-то, табу - это как раз запрет: "Табу́ — строгий запрет на совершение какого-либо действия"

                      Это описание ровным счётом ничего не даёт.

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

                      Честно говоря, я думал, что для такого эффекта потребуется решить гораздо больше проблем в сложившейся нотной записи. Он решил только одну. Результат превзошёл ожидания.

                      Тем поразительнее реакция отторжения, которую вы могли видеть на форуме по ссылке выше. (ровно она же во многих других местах по другим поводам). Реакция коллективной травли, она при любой форме корректности общения - по сути одинакова. Людей злит что-либо, что стало им недоступно в результате выбора ими неких правил, предложенных как "весьма выгодные".

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

                      Со временем, сделанный выбор, многократно подтверждённый, приводит к действительной недоступности за пределами "пространства видения". К убеждённому невидению. Заметно это только в присутствии проявлений из следующих бОльших контекстов, вызывающих раздражение. Средство защиты -- "пустое" описание этих явлений внутри контура, образовавшегося выбором (кривых) правил. Согласием и оправданием этих правил. Так человек становится защитником ограничений. Уже из личных мотивов. При этом среди участников (травли) всегда есть, те кто хорошо понимает, что происходит и какие его выгоды за этим стоят. Такие активно подыгрывают "игре в слона" -- мы не видим, докажи. В интернете нет, а в личных беседах, это потом выясняется.

                      Что удивительно, этот парадокс "невидения" напрямую не связан с интеллектом и даже, казалось бы... с широтой эрудиции. Нередко наоборот, эрудиция на поверку оказывается той самой коллекцией "пустых" описаний, защищающих от реальности. Эти описания даже могут приводить к результатам при взаимодействии внутри искусственного контура. Так эти контуры и разрастаются -- добавлением описаний. У находящихся внутри, выстраивается ложная подсознательная связь собственного выживания с целостностью контура. Впрочем, всё это имеет значение только тогда, когда есть потребность выйти.

                      P.S. Спасибо, хоть про Белецкого вспомнил благодаря вашим вопросам.


                      1. lair
                        14.01.2023 03:43

                        Это описание ровным счётом ничего не даёт.

                        Гм, это определение (полное в википедии) дает ровно то, что должно давать определение - отличие табу от каких-то других явлений. Что еще оно должно давать?

                        довольно бегло исполняют на фоно классические этюды собственного сочинения.

                        А мелкая моторика и координация у них тоже берется благодаря нотной записи?..

                        А могут ли эти люди сыграть, не знаю, банального Черни? Могут ли они сыграть Шрадика на скрипке? Записать со слуха аккордовый диктант? Разобрать структуру музыкального произведения?

                        Честно говоря, я думал, что для такого эффекта потребуется решить гораздо больше проблем в сложившейся нотной записи. Он решил только одну.

                        Гм, так он придумал "слоги для озвучки полутонов" (это сольфеджио, или, если угодно, сольмизация) или изменил нотную запись (это вообще-то совсем другое)?

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

                        Что же конкретно стало людям недоступно? И в силу какого конкретно сделанного ими выбора?

                        (для простоты - все на том же примере "нотной записи")


                      1. Tomvish
                        14.01.2023 14:37

                        Что еще оно должно давать?

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

                        Если вы хотите понять, скажем, мета-классы, вы открываете определение и вам либо уже понятно, как с ними работать, либо есть ссылки на более развёрнутое описание, где вам снова понятно как этим управлять.

                        Когда же вы хотите, узнать как работает, то чем управляют Вами, вы получаете многобуквенный пустой ответ - заглушку. Ссылки ведут на заглушку * 2^1000 для заполнения вашей памяти весомым ответом. Что изменилось от такого ответа - ничего. Вы как не управляли этими процессами вашей жизни, так и не управляете. Более того увидеть их сквозь призму ответа становится совершенно невозможно. Причём такой результат достигается усилиями самого идущего по ложному следу.

                        Вы, мне кажется, понимаете по "табу" что-то свое.

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

                        Я спрашиваю не про реакцию, а про табу. Про какое конкретно табу вы говорите?

                        Конечно, я вижу в чём вопрос и намерено хочу обратить ваше внимание именно на характерную реакцию. Именно через неё, вам станет видно табу, как наблюдаемое явление, а не как ссылка на определение.

                        А что если у табу нет названия? Но есть список наблюдаемых последствий. При этом в одном сообществе, где табу принято, одни результаты, в другом другие. Назовём это "Лес". В начале разговора, вы пошагово сужали контекст до всё большей конкретики отдельных утверждений. Это стратегия хорошо работает для других задач. Для данного вопроса нужен противоположный процесс - расширение контекста. Однако, этот процесс натыкается на "запреты" и "заглушки".

                        Чтобы увидеть "Лес", нужно фокусное расстояние изменить из режима микроскопа в широкоугольное. Но там программный запрет, подкреплённый негативной реакцией сообщества. (Которую сообщество регулярно демонстрирует, так чтобы сомнений в наступлении последствий не было). Если снимешь запрет, дальше сам не захочешь, под нападками и/или "молчаливым" неодобрением коллег. (Это их "оскорбляет".) Всё это наблюдается непосредственно, без ссылок на авторитетные исследования.

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

                        Поэтому, ещё раз, несмотря на то, что объект должен быть назван, чтобы им управлять, он не должен быть назван ранее, чем вы выйдете в его пространство имён. Табу остаётся табу, пока находится за пределами доступного контура. Можно сказать так, что название (m.b. временное), объекту последствия которого вы НАБЛЮДАЕТЕ, вы должны дать сами, чтобы иметь управление им, избегая ошибки создания локального (пустого) описания в текущей (личной или разделяемой) картине мира. А я пока не понял, можете ли вы наблюдать проявления табу?


                      1. lair
                        14.01.2023 15:59

                        Способность управлять этим объектом, тому кто взял ответственность.

                        То есть определение урагана должно давать способность управлять ураганом?

                        Мне кажется, что ваше понимание "определения" настолько же далеко от общепринятого, как и ваше понимание "табу".

                        Попытался рассказать вам как это работает, из чего можно вывести что с этим делать

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

                        Конечно, я вижу в чём вопрос и намерено хочу обратить ваше внимание именно на характерную реакцию.

                        Я вижу характерную реакцию, но не на табу. Я вижу характерную реакцию на нововведение, претендующее на радикальное изменение отрасли, но ничем не могущее это подтвердить.

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

                        У табу не обязательно есть название. Но у табу обязательно есть то, что запрещается. Конкретное действие (или набор действий).

                        Назовите их.

                        А я пока не понял, можете ли вы наблюдать проявления табу?

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


                      1. Tomvish
                        14.01.2023 16:27

                        То есть определение урагана должно давать способность управлять ураганом?

                        Намерение определяет результат действия. С намерением, как мне видится, "защитить имеющуюся разделяемую картину мира", вы ровно этот результат и получите. Не более.

                        Да нормальное определение должно приводить к возможности управления. Если к этому не приводит, вероятно это заглушка. Нужно проверять.


                      1. lair
                        14.01.2023 16:33

                        Да нормальное определение должно приводить к возможности управления.

                        Повторюсь, вы уже не первый раз используете не те же значения слов, что общеприняты. Это затрудняет диалог.

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


                      1. Tomvish
                        14.01.2023 16:16

                        Гм, так он придумал "слоги для озвучки полутонов" (это сольфеджио, или, если угодно, сольмизация) или изменил нотную запись (это вообще-то совсем другое)?

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

                        А мелкая моторика и координация у них тоже берется благодаря нотной записи?..

                        Тут можно обратиться к находкам Багрунова. У него, кстати описана поучительная история о появлении "итальянской постановки голоса".

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

                        С мелкой моторикой, вполне может быть так же - вместо многослойного зажима, вызванного многократной конвертацией из нотной записи в названия нот, а потом в их вид на клавиатуре (плюс сам звук, до которого уже нет дела), что типично для начинающих. Методика, позволяющая избавиться от запинок, всего лишь на одной из этих ступеней, даже не меняя самой (порочной) схемы, высвобождает ресурсы. Это позволяет не научиваться ненужным промежуточным навыкам, которые могут и не исчезнуть насовсем, когда станут не нужны, а с лёгкостью необходимой для творчества освоить новый навык.

                        Вот именно на такие изменения по-видимому и существовало табу.


                      1. lair
                        14.01.2023 16:24

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

                        Если для вас обучение существующей культуре - это насилие, то... ну не совершайте его. Это не обязательно, в конце концов.

                        Тут можно обратиться к находкам Багрунова.

                        403 Forbidden.

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

                        Гм. То есть внезапно, в методику входит не только "слоги для полутонов", но еще и какое-то звукоизвлечение?

                        С мелкой моторикой, вполне может быть так же - вместо многослойного зажима, вызванного многократной конвертацией из нотной записи в названия нот, а потом в их вид на клавиатуре

                        Гм. Я вам открою секрет: не должно быть такой конвертации. Задача - одна из - обучения игре на инструменте (при чтении с листа) - это выработка прямого соотношения нотной записи и исполнения на инструменте. Внутреннее проговаривание нот настолько же бесполезно (и даже вредно), как и проговаривание обычного текста, который вы читаете (и от которого проговаривания отучают в обычной школе, если не раньше).

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

                        Это позволяет не научиваться ненужным промежуточным навыкам, которые могут и не исчезнуть насовсем

                        Так подождите: проговаривание нот при чтении нотной записи - это ненужный промежуточный навык (для исполнителя). А описываемая методика на нем и основана. Как же она позволяет не учиться ненужному? Она просто заменяет одно в будущем не нужное на другое в будущем не нужное.


                      1. Tomvish
                        14.01.2023 16:54

                        403 Forbidden.

                        Заметьте, я только что нагуглил и проверил ссылку. Вот ещё. Будете смеяться, но это к вопросу о намерениях.

                        внезапно, в методику входит не только "слоги для полутонов", но еще и какое-то звукоизвлечение?

                        Нет это относится к Багрунову. То есть вы "развлекаетесь задаванием мне вопросов", не посмотрев о чём речь (второй день)?

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

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

                        Гм. Я вам открою секрет: не должно быть такой конвертации

                        Раз уж она есть, Белецкий оптимизировал это другим способом.

                        Вообще тут интересней не сам Белецкий, человек, как человек, берёт ответственность и решает задачи. Важней изучить "собак лающих в таких случаях", чтобы не оказаться в их числе.


                      1. lair
                        14.01.2023 17:02

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

                        Вы, видимо, не в курсе про то, что в разных регионах мира разная доступность ресурсов?

                        Нет это относится к Багрунову.

                        А как я должен понять, что вы сменили контекст?

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

                        Зажим возникает от напряжённого внимания в попытках удержать во внимании несколько структурно различных типов новой информации.

                        Откуда берется эта попытка удержать, если раньше человек не занимался?

                        А если ещё задашься вопросом Зачем так сделано? - вообще заниматься не сможешь

                        Мы говорим про ребенка или про взрослого? Ребенок такими вопросами сам не задается (но хороший преподаватель или система все равно рано или поздно рассказывает). Взрослый же, обычно, как раз задается такими вопросами, чтобы как-то рационализировать себе происходящее. Не во время исполнения, понятное дело.

                        Раз уж она есть, Белецкий оптимизировал это другим способом.

                        Зачем оптимизировать то, чего не должно быть?

                        Вообще тут интересней не сам Белецкий, человек, как человек, берёт ответственность и решает задачи.

                        Вы сам привели его методику в пример, утверждая, что она приносит пользу (или я вас неправильно понял?). А я вам объясняю, почему эта методика вызывает некоторый скепсис.

                        Заметим, скепсис в отношении нового - это нормально. Это не всегда продуктивно, но нормально. Но скепсис - это не табу (возвращаясь к тому, с чего начался этот разговор). Табу было бы, если бы Белецкому запрещали преподавать и публиковаться, не давали патентов и так далее. А все, что я вижу - это то, что на каких-то форумах в интернете его методику не приняли с распростертыми объятиями... ну и что?


                      1. lair
                        14.01.2023 17:10

                        Хочу заметить, однако, что некоторые выхваченные мной из книги куски

                        Простите, не могу не процитировать:

                        Помните об ужасающих последствиях, которое влечет за собой прослушивание современной музыки, построенной на жестких ритмах и невыносимой для слуха громкости? Современная музыка — прямой путь к уничтожению личности- и здоровья. Наверняка для кого-то это покажется спорным, однако когда выдающегося дирижера современности Бруно Вальтера спросили, как он относится к джазу, тот ответил, что не слушает его, поскольку джаз оскорбляет его слух.

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

                        Важно понимать, что упоминаемый Бруно Вальтер скончался в 1962 году, почти за 50 лет до издания книги.


                      1. Tomvish
                        14.01.2023 17:16
                        -1

                        ну не совершайте его. Это не обязательно, в конце концов.

                        Похоже, что это обязательное условие входжения в любой "иллюзорный контекст" -- негласный акцепт тех правил, которые предлагаются на входе. Чтоб ты не удивлялся потом "второму дну", уже сразу в этих правилах видны несостыковки. Позже можно будет считать, что ты "знал на что шёл".

                        Если будет интересно, можем вернуться к этому разговору спустя время, если произойдут какие-то изменения. А пока мы ходим по тому же сценарию, выход из которого я описываю. (Возможно не вам)

                        За сим, прощаюсь, спасибо за разговор.

                        P.S. Применение английского, с чего всё началось, это такой же негласный акцепт, соглашаясь на который, по возвращению с абстрактного уровня обратно к конкретике, всегда получаются дробные землекопы. А 0,7 землекопа уже может только копать не более того. Но обсуждать это здесь не вижу смысла. Просто оставлю.


                      1. lair
                        14.01.2023 17:22

                        Похоже, что это обязательное условие входжения в любой "иллюзорный контекст" -- негласный акцепт тех правил, которые предлагаются на входе.

                        Гм. Переводя на русский язык, вы называете условием вхождения в литературу "негласный акцепт" того, что надо научиться читать? Ну... да.

                        Если для вас обучение чтению - насилие над собой, можете не учиться.

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

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

                        Так что как, собственно, и с музыкой: вы намекаете на какие-то тайные знания и запреты, но реальности под вашими заявлениями не видно.


                      1. lair
                        14.01.2023 18:37

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

                        Или вот зайдем с другой стороны. В компании, в которой я работаю, работают люди с совершенно разными основыми языками - русский, английский, французский, испанский, хинди, сингальский (или тамильский, или оба) - и это только те, про которых я знаю. Какой (естественный) язык вы предлагаете выбрать основным для использования в разработке?


              1. Tomvish
                13.01.2023 15:27

                Абстрагирование ценно релевантным возвратом к конкретике, чтоб не получалось "полтора землекопа".

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


          1. lair
            12.01.2023 01:25
            +1

            Как исправляются "не ошибки"?

            В данном случае - очень просто: создаете конкурирующий "язык для программирования", и убеждаете людей, что он лучше, чем английский.


            1. WraithOW
              12.01.2023 18:51

              Всё уже придумали до нас: https://habr.com/ru/post/41303/


              1. Tomvish
                13.01.2023 02:47

                Дальше этой хохмы не идёт и всё к ней возвращается. Удобно:)

                Более того можно написать два десятка причин, почему это так. Хорошо, что уже не раз написано и похоже лениво повторяться. Иначе не избежать было бы очередного ненужного цикла.

                А ведь речь была не про удобно/неудобно, возможно/невозможно, а конкретно про признание ошибки. Английский "не самый удобный" для программирования.

                Да или Нет?


                1. lair
                  13.01.2023 04:52
                  +1

                  Английский "не самый удобный" для программирования.
                  Да или Нет?

                  "не определено". Потому что как вы определите "удобность"?


              1. Wesha
                13.01.2023 03:11
                +1

                И до них тоже

                Кстати, почему нет синтаксической разметки для Pascal?

                program OH_TOPMO3;
                
                uses
                CRT;
                
                const
                MHOrO_TEKCTOB = 15;
                nPOPEXA = nil;
                
                type
                A_KTO_EBO_3HAET = (HO_KTO_TO_BEgb_3HAET, BCE_ETO_BECbMA_CTPAHHO);
                
                HyMEP = Byte;
                
                CTPOKA = String[15];
                
                TEKCTuK = record
                  OHA: CTPOKA;
                  TOPMO3: HyMEP;
                end;
                
                TAM_ABTOMAT = ^ABTOMAT;
                
                ABTOMAT = object
                MOE_X, MOE_Y: HyMEP;
                TEKCTOB_BCEBO: HyMEP;
                TEKCTbl: array[1..MHOrO_TEKCTOB] of TEKCTuK;
                KAKOE: HyMEP;
                TOPMO3uM: HyMEP;
                XPEH_EMy: TAM_ABTOMAT;
                
                constructor BOT_EBOHOE_MECTO(X, Y: HyMEP);
                  procedure BOH_ETOT_XPEH(KOMy_XPEH: TAM_ABTOMAT);
                  procedure ETO_CTPOKA(OHA_CAMA: CTPOKA; EE_TOPMO3: HyMEP);
                  procedure BblBOg;
                end;
                
                XMblPb = object
                HE_KACEKOB: A_KTO_EBO_3HAET;
                KTO_TAM_CAMOE_TAKOE: TAM_ABTOMAT;
                
                constructor Hy_HuKAK_MHE_EBO_HE_HA3BATb;
                  procedure B_nyTb;
                  procedure u_EBO_TO3E (uMEHHO_ETO_MOXHATOE_OHO_CAMOE: TAM_ABTOMAT);
                end;
                
                procedure BAM_TEMHO;
                begin
                  ClrScr;
                end;
                
                procedure TOPMO3HyTb(CKOKO: HyMEP);
                begin
                  Delay(CKOKO);
                end;
                
                procedure rge_EMy_KBACuTb(EBO_X, EBO_Y: HyMEP);
                begin
                  GoToXY(EBO_X, EBO_Y);
                end;
                
                function WyXEP: Boolean;
                begin
                  WyXEP := KeyPressed;
                end;
                
                constructor ABTOMAT.BOT_EBOHOE_MECTO(X, Y: HyMEP);
                begin
                  MOE_X := X;
                  MOE_Y := Y;
                  TEKCTOB_BCEBO := 0;
                  KAKOE := 0;
                  TOPMO3uM := 0;
                end;
                
                procedure ABTOMAT.BOH_ETOT_XPEH(KOMy_XPEH: TAM_ABTOMAT);
                begin
                  XPEH_EMy := KOMy_XPEH;
                end;
                
                procedure ABTOMAT.ETO_CTPOKA(OHA_CAMA: CTPOKA; EE_TOPMO3: HyMEP);
                begin
                  if TEKCTOB_BCEBO < MHOrO_TEKCTOB then begin
                    Inc(TEKCTOB_BCEBO);
                    with TEKCTbl[TEKCTOB_BCEBO] do begin
                      OHA := OHA_CAMA;
                      TOPMO3 := EE_TOPMO3;
                    end;
                  end;
                end;
                
                procedure ABTOMAT.BblBOg;
                begin
                  if TEKCTOB_BCEBO > 0 then begin
                    if TOPMO3uM = 0 then begin
                      Inc(KAKOE);
                      if KAKOE > TEKCTOB_BCEBO then KAKOE := 1;
                      rge_EMy_KBACuTb(MOE_X, MOE_Y);
                      with TEKCTbl[KAKOE] do begin
                        Write(OHA);
                        TOPMO3uM := TOPMO3;
                      end;
                    end;
                    Dec(TOPMO3uM);
                  end;
                end;
                
                constructor XMblPb.Hy_HuKAK_MHE_EBO_HE_HA3BATb;
                begin
                  KTO_TAM_CAMOE_TAKOE := nPOPEXA;
                  HE_KACEKOB := BCE_ETO_BECbMA_CTPAHHO;
                end;
                
                procedure XMblPb.u_EBO_TO3E(uMEHHO_ETO_MOXHATOE_OHO_CAMOE: TAM_ABTOMAT);
                begin
                  if KTO_TAM_CAMOE_TAKOE = nPOPEXA then begin
                      KTO_TAM_CAMOE_TAKOE := uMEHHO_ETO_MOXHATOE_OHO_CAMOE;
                      uMEHHO_ETO_MOXHATOE_OHO_CAMOE^.XPEH_EMy := uMEHHO_ETO_MOXHATOE_OHO_CAMOE;
                    end
                  else begin
                    uMEHHO_ETO_MOXHATOE_OHO_CAMOE^.XPEH_EMy :=
                    KTO_TAM_CAMOE_TAKOE^.XPEH_EMy;
                    KTO_TAM_CAMOE_TAKOE^.XPEH_EMy := uMEHHO_ETO_MOXHATOE_OHO_CAMOE;
                  end;
                end;
                
                procedure XMblPb.B_nyTb;
                var
                ETOT_PAXuT: TAM_ABTOMAT;
                
                begin
                  ETOT_PAXuT := KTO_TAM_CAMOE_TAKOE;
                
                  while not WyXEP do
                  with ETOT_PAXuT^ do begin
                    BblBOg;
                    ETOT_PAXuT := XPEH_EMy;
                    rge_EMy_KBACuTb(1, 10);
                    TOPMO3HyTb(10);
                  end;
                end;
                
                procedure BAM_XOPOWO;
                begin
                  BAM_TEMHO;
                  WriteLN('OH TOPMO3 v1.0 Copyright The Future Hackers, 1993');
                  WriteLN(' . Written by Kirill Shirokov and Dmitry Moskovich, May 93');
                  WriteLN;
                end;
                
                var
                EBO_3EHKu,
                EBO_HOC,
                EBO_POT,
                EBO_XBOCT : ABTOMAT;
                
                KACEKOB : XMblPb;
                
                begin
                with KACEKOB do begin
                Hy_HuKAK_MHE_EBO_HE_HA3BATb;
                with EBO_3EHKu do begin
                  BOT_EBOHOE_MECTO(1, 1);
                  ETO_CTPOKA('- -', 20);
                  ETO_CTPOKA('o o', 3);
                  ETO_CTPOKA('O O', 16);
                  ETO_CTPOKA('0 0', 23);
                  ETO_CTPOKA('O O', 14);
                  ETO_CTPOKA('o o', 5);
                end;
                
                u_EBO_TO3E(@EBO_3EHKu);
                
                with EBO_HOC do begin
                  BOT_EBOHOE_MECTO(1, 2);
                  ETO_CTPOKA(' .. ', 21);
                  ETO_CTPOKA(' oo ', 16);
                end;
                
                u_EBO_TO3E(@EBO_HOC);
                
                with EBO_POT do begin
                  BOT_EBOHOE_MECTO(1, 3);
                  ETO_CTPOKA(' -- ', 22);
                  ETO_CTPOKA(' == ', 4);
                  ETO_CTPOKA('-==-', 6);
                  ETO_CTPOKA('/--\', 19);
                  ETO_CTPOKA('----', 16);
                  ETO_CTPOKA('\==/', 21);
                  ETO_CTPOKA('----', 3);
                end;
                u_EBO_TO3E(@EBO_POT);
                
                BAM_TEMHO;
                B_nyTb;
                BAM_XOPOWO;
                end;
                end.
                


            1. Tomvish
              13.01.2023 04:12

              Логично.

              Вопрос в способах убеждения.


              1. lair
                13.01.2023 04:53

                Ну, я имел в виду "цивилизованные" - показать достоинства себя и указать на недостатки конкурентов. А вы?..


          1. Jianke
            12.01.2023 10:20
            +3

            Мне одному кажется, что выбор английского, как основного для программирования, большая ошибка?

            Поздно уже запрещать товарищ майор! Те кто умеют не только в 1С, уже уехали прошлой осенью. :-)


            1. Wesha
              12.01.2023 10:28
              +1

              > уехали прошлой осенью

              Прошлой осенью?! Да Вы, батенька, тормоз — некоторые лет 20 как уехали!


          1. WraithOW
            12.01.2023 18:56
            +1

            Вам перестанет казаться, как только вам придется поковыряться в кишках какой-нибудь библиотеки, авторы которой решили писать все названия функций и переменных на своём языке. Ах да, и файлы исходников не в UTF-8, а в местной кодировке.


            1. Tomvish
              13.01.2023 03:16

              Опять же вы говорите, про единый стандарт, а не про английский в программировании. Тема настолько заезженная, что, кажется что никто не замечает как уходят от "неудобной" постановки вопроса. Мол, зачем ты лезешь туда, уже всё сложилось.



        1. lxsmkv
          12.01.2023 06:08

          В том то и дело, что ChatGPT-подобные машины умеют по контексту отличать значения фраз. А если надо она еще и переспросить или уточнитъ может.


      1. radtie
        12.01.2023 10:18
        +1

        Но да, "оно" молча и спокойно переделает столько раз, сколько скажут, в отличие от живого коллеги


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

        Поэтому после каждой переделки он будет тебе, кожаный мешок, подробно и живописно объяснять какое же ты ничтожество.


      1. bak
        12.01.2023 11:41

        Ну, не совсем, кажется оно начинает злится и тролить спрашивающего если что-то не выходит за 2-3 раза


    1. DarkTiger
      12.01.2023 00:19
      +2

      Теперь разработчик нового уровня будет писать очень-очень подробное техническое задание

      UML бессмертен?


      1. Kopilov
        12.01.2023 11:36
        +1

        Как и ДРАКОН


      1. Layan
        12.01.2023 16:47

        Это пока не появится нейросеть, которая генерирует UML из потока мыслей.


    1. shnegs
      12.01.2023 08:59

      будет писать очень-очень подробное техническое задание

      А без всех этих ИИ ТЗ не написать...


    1. blanabrother
      12.01.2023 09:39
      +10


      1. UncleSam27
        12.01.2023 14:39

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


        1. inkelyad
          12.01.2023 15:49
          +1

          По сути просто еще один язык программирования появляется.

          Если бы. У этой штуки (надеюсь, пока) нет формального и достоверного 'если написать так - то будет то-то'. Одни 'если использовать такую-то конструкцию - то скорее всего получится то что хочешь. Т.е. имеем в буквальном смысле написание заклинаний/загадывание желаний у джинна, который тебя не так чтобы совсем слушается.


          1. Wesha
            13.01.2023 08:45

            Скажите спасибо, что это не классический джинн, который пользуется своей свободой интерпретации и делает всё наихудшим для просящего образом ;)

            (Не могу сейчас найти тот фантастический рассказ, где постаревшие влюблённые пошли в пустыню, полностью подготовившись, продумав все предосторожности и детали желания, и джинн его выполнил, дав им секс-драйв молодых — но телесно оба остались стариками)


        1. Wesha
          13.01.2023 06:49

          Полная спецификация учитывающая все моменты по сути есть программа.

          Я именно это и имел в виду.


    1. rdp
      12.01.2023 12:46

      EaC: Everything as code


  1. misha98857
    11.01.2023 23:44

    Напомнило FizzBuzzEnterpriseEdition :)

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

    Например, такие данные по условию валидны, но ваш код его не пропустит из-за текущей проверки на дубли. (Считаем, всё, что не уточнено в статье и в задании может произойти)

    source = [
        ('a', 'a1'),
        (None, 'a'),
        (None, 'a1'),
    ]

    В 2023 вроде уже все типы/почти все можно без импорта отдельного модуля указывать или это пока ранняя фича и есть обоснования использовать отдельный модуль?


    1. iuabtw
      12.01.2023 00:28
      +1

      Про типы: версию питона не видно, до 3.9 нужно импортировать модуль


    1. vesper-bot
      12.01.2023 16:41
      +1

      А у вас не дерево, а граф с циклом. Так что данные действительно невалидные.


  1. DarkTiger
    12.01.2023 00:16
    +1

    Мысль пришла, а руки уже искали информацию, как прорваться к chatGPT из России. Спустя какое-то время прорвался

    На Авито 100 руб за регистрацию эккаунта отдали? И правильно сделали.


    1. Stepik Автор
      12.01.2023 11:15

      Сделал дешевле, можно сказать за 7 рублей, вот по этой статье - https://habr.com/ru/post/704600/

      Единственное отличие - вышел из под тора.


  1. spbru
    12.01.2023 00:35
    +5

    В целом, человек получили возможность более успешно гуглить куски кода для своих задач. Многие и так это делали без всякого ИИ. Просто сейчас стало удобнее.


  1. commanderxo
    12.01.2023 02:15

    В прошедшем декабре энтузиасты ИИ начали решать задачи с Advent of Code при помощи ChatGPT и ему подобных, что вызвало негодование живых пользователей. Многие проходят AoC ради развлечения, но некоторые люди пришли действительно посоревноваться, а верхушка таблицы рекордов занимается роботами пока человеки всё ещё читают условие очередной задачи. Дней через пять, по мере усложнения задач, роботы сдулись, но успех всё равно впечатляющий.


    1. Wesha
      12.01.2023 02:43
      +3

      Старо как мир — это ещё кожаные мешки придумали: если давать премию за максимизацию некоего целевого значения, то решаться будут только те задачи, которые повышают целевое значения, а не те, которые нужно. Решается вдумчивой переработкой целевой функции.


  1. mentin
    12.01.2023 02:33

    Интересно проанализировать, почему оно не справилось. Задача довольно известная, оно наверняка её видело в процессе обучения - и обычно в таких случаях "вспоминает". Возможно, было слишком много разных решений или похожих задач - видел несколько раз синтез разных несовместимых решений, которые каждое по себе ок, а вместе бессмыслица.


  1. bazilxp
    12.01.2023 06:41
    +1

    Сегодня спрашивал ChatGPT написать сортироровку используя LUA, код пишет но нужно учитывать что массивы начинаются с "1" а не "0" arr = {[0]=3, 4, 1, 7, 2, 9, 8, 6} типа хака=) Ацкая вещь одним словом , с питоном подобных проблем нет


  1. AEPI3
    12.01.2023 11:15

    Ну круто же. Как бы ни было, это уже что-то.


  1. solaris_n
    12.01.2023 12:00
    +2

    Consider the ChatGPT as a more advanced stackoverflow :D


  1. ChornyAsphalt
    12.01.2023 13:44

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


  1. Stepik Автор
    12.01.2023 16:17
    +9

    Есть новости! Работодатель ответил, что в целом код прошел ревью, но были какие-то сомнения в теме того, что позиция не предусматривает ML/AI задач, к которым я в целом стремлюсь. Но, учитывая это, предложили следующий этап интервью. Так что мы с chatGPT успешно прошли этот нулевой этап!

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

    А в целом хочу еще и публично извинится перед работодателем за этот эксперимент и надеюсь в нем будет больше пользы, чем шутки.


  1. Ivan22
    12.01.2023 16:43
    +2

    я бы на месте работодателя и проверять присланные тестовые - chatGPT запряг бы.


  1. Stepik Автор
    12.01.2023 17:18
    +2

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

    Отвечает создатель тестового:

    Это, конечно, лучше чем 90% присылаемых решений, но всё равно они даже вместе с роботом родили шляпу. Кстати, чтоб пользоваться тем, что даёт бот, надо уметь читать много чужого кода, а это сложнее, чем писать мало своего.

    От себя как HR добавлю, что если бы вы предупредили об использовании GPT, мы бы, скорее всего, оценили искренность. В ином случае даже на собеседование не позвали бы. Начинать отношения с обмана - такое себе :)


    1. Kanut
      12.01.2023 17:31
      +9

      От себя как HR добавлю, что если бы вы предупредили об использовании GPT, мы бы, скорее всего, оценили искренность. В ином случае даже на собеседование не позвали бы. Начинать отношения с обмана — такое себе :)

      А я бы от себя добавил что условия тестового задания надо чётче прописывать. То есть там где-то было указано что нельзя использовать GPТ? Если нет, то какие тогда претензии? :)


      1. anna_kos
        12.01.2023 20:16

        Вы, чего, и работу за меня делать будете? — Ага!

        Всего не пропишешь. Есть такая штука как здравый смысл. Ещё авторское право, неполнота контракта и этика.


        1. Kanut
          12.01.2023 21:31
          +7

          Ну то есть скажем гуглить решение можно, а GPT использовать нельзя? Или гуглом тоже не этично будет пользоваться?


        1. holomen
          12.01.2023 23:52
          +1

          Но ведь копайлот и чатгпт довольно давно уже на слуху. Запрет/разрешение использовать эти технологии кмк уже вполне себе можно регламентировать. Т.к. их попробовали, кмк, чуть больше чем все уже.

          А то так можно дойти до отказа по причине "вы использовали автокомплит, а мы это не одобряем и вообще это введение в заблуждение, т.к. не каждый символ был набран собственноручно"


          1. Areso
            13.01.2023 00:02

            Ваша гипербола смотрится смешной на первый взгляд, но таки да.

            Некоторые не разрешают пользоваться Гуглом, IDE, и прочими вещами.

            Вот вам текстовый редактор (с подсветкой синтаксиса, если повезёт), пишите в нём.


            1. Tresimeno
              13.01.2023 18:56

              Некоторые не разрешают пользоваться Гуглом, IDE, и прочими вещами.

              Вот вам текстовый редактор (с подсветкой синтаксиса, если повезёт), пишите в нём.

              Как по мне , такая дрочка при входе, почти в армейском стиле, должна сопровождаться какими-то неземными благами, которые человек за деньги с улицы не купит. Но по моей практике обычно там все как раз наоборот, да и денег там не платят нужных, предпочитая рассказывать что "мы одна Семья" , "работать у Нас Большая Честь" и пр. буллшит на понтах.


    1. Yurchicnice
      12.01.2023 23:14
      +2

      Согласен с комментаторами, странный и немного хамоватый ответ от HR, с упреком и "типа позитивной" улыбочкой в конце, хотя всем очевидно, куда идёт развитие технологий и что кандидат может просто нанглулить задание, но почему-то каждому претензии по этому поводу не выкатывают с упрёками...


      1. xxji
        13.01.2023 14:18
        +1

        Потому что hr эу тогда придется оценивать кандидатов не шаблонно, а на это у него компетенций нет, сл. это прямая угроза hrу вот он так и реагирует.


  1. Shrizt
    12.01.2023 17:42
    +8

    Вспомнился случай как в одной компании, кажется в США уволили лучшего программиста, который как оказалось аутсорсил задачи индусам... вместо того чтобы повысить парня до руководителя аутсорсинга разработки дураки :)

    GPT это инструмент, к тому же бесплатный, почему нельзя им было пользоваться?

    короче - считайте что вам с ботом повезло, вы найдете лучшее применение.


    1. Stepik Автор
      12.01.2023 18:01
      +2

      Да, помню тот случай, и он тоже мне пришел на ум в этой истории!

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


      1. Areso
        12.01.2023 23:59
        +5

        Надеюсь, должность называется "Инженер-повелитель ChatGPT", иначе уровень юмора ситуации не достигнет впечатляющих высот.


  1. krolik666
    13.01.2023 00:40

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


    1. Layan
      13.01.2023 16:11

      а что если заменить вот этот блок

      Останется боту угадывать, какой именно блок имел ввиду кожаный мешок.


      1. GbrtR
        13.01.2023 21:21

        Жена же как-то понимает, когда ты ей кричишь: «принеси, ну ту штуковину, там где-то лежит».

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

        Т.е. у вас будет профиль человека плюс профиль проекта и пред началом сессии они будут скармливаться сетки для выставлению текущего контекста общения.

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

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

        Может быть даже история сессий будет скармливаться с оценками полезности ответов, так со временем улучшится взаимопонимание до уровня жены (или даже выше). Система будет знать с какими последними блоками ты работал и предугадывать какие могут быть на очереди или к каким ты вернёшься.

        Навреное ещё какие-нибудь плагины или дообученые модули можно будет подключать, чтобы под специфику задач подстраиваться. Базы знаний/api для внешних верификаций ответов на правильность.

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

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

        Например я работаю в основном с MS SQL server, поэтому добавив в запрос

        sql get current date/time MS SQL server

        ты сразу получишь искомое, а не варианты для MySql/Postgres, но потом гугл похоже сам стал поумнее и помнит что MySql мне не интересен.

        или для

        js date/time component

        добавляем -react -vue -jquery angular, если мне нужен angular, тоже сильно улучшает поиск.

        Так что, чтобы каждый раз не печатаь подобное, написал простое расширение.


        1. Wesha
          13.01.2023 23:42

          Жена же как-то понимает, когда ты ей кричишь: «принеси, ну ту штуковину, там где-то лежит».

          Да, и вот приносит она штихель — и как-то неудобно ей сказать, что вообще-то ты хотел шерхебель.


          1. GbrtR
            14.01.2023 00:00

            Савву Игнатьича никогда это не останавливало. В семье же главное открытость отношений.