Я сейчас активно ищу работу, прохожу собеседования и иногда работодатели присылают тестовые задания, прежде чем пригласить на интервью. В очередной раз мне прислали простенькое тестовое задание, в целом много таких похожих: из списка вершин построить дерево.
Тестовое задание
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)
pathofpw
11.01.2023 22:37Да, оно пока туповатое, но уже полезное, когда надо побыстрому накидать что-то типа "fastapi based aiohttp lxml google scraper".
А задачка для тестового слабовата.breninsul
13.01.2023 14:19Мне кажется скорее бесполезна. Нз чем фирма занимается, но если они строят деревья - то явно занимаются чем-то не тем. Вот в Фэйсбук набирают со знанием алгоритмов, и что, как работает, всем нравиться?) Как по мне, наоборот желание пробовать новое кандидатом похвально
Wesha
11.01.2023 22:38+37В процессе снисходительного обсуждения мы приходим к мысли, что вообще-то работа разработчика на половину состоит из правильной постановки задачи.
Вооооооот, именно!
С этим вашим ИИ просто появляется очередное звено: в самом начале разработчик писал код низкого уровня (на ассемблере), который транслировался в машинный код, который исполнялся процессором. Потом разработчик стал писать код на языке высокого уровня, который транслировался в код низкого уровня, который транслировался в машинный код, который исполнялся процессором. Теперь разработчик нового уровня будет писать очень-очень подробное техническое задание, которое транслируется в код на языке высокого уровня, который транслируется в код низкого уровня, который транслируется в машинный код, который исполняется процессором....
Nilomar
11.01.2023 22:41+1Именно так. Вырос уровень абстракции, выросли наши возможности
Wesha
11.01.2023 22:48+29выросли наши возможности
Ага, как в той шутке — "хороший внедорожник застрянет там, куда плохой не доедет", поэтому
πзшкандыбать придётся не за "Беларусью", а за "Кировцем".Иными словами,
Nilomar
11.01.2023 22:54А когда это останавливало представителей нашего вида с момента его рождения? Это встроенная в нас директива нашей эволюционной стратегии
Потому индустрия внедорожников и существует
aaabramenko
11.01.2023 22:54+5Теперь разработчик нового уровня будет писать очень-очень подробное техническое задание,
Периодически может возникать проблема как с делегированием людям: проще сделать самому, чем объяснять, что нужно, с переделками в несколько итераций. Но да, "оно" молча и спокойно переделает столько раз, сколько скажут, в отличие от живого коллеги.
Wesha
11.01.2023 23:29проще сделать самому, чем объяснять, что нужно,
В целом да.
Но я вообще-то говорил про то, что логика работы не изменилась: по-прежнему объясняешь компьютеру, что делать. Просто зменилось то, как именно это делаешь: раньше объяснял на формальном языке, принципиально не допускающем неоднозначностей и двойных трактовок — а теперь будем объяснять на живом велико
руанглийском языке со всеми его "прелестями" (record changes — это "запиши изменения" или "запись изменяется"?)Tomvish
11.01.2023 23:52-10Мне одному кажется, что выбор английского, как основного для программирования, большая ошибка?
Склоняюсь к "недобросовестной конкуренции", что строго под термин "ошибка" не подпадает.
Как исправляются "не ошибки"?
Wesha
12.01.2023 01:14+3В случае формального языка — я очень рад выбору английского. Потому что когда я читаю код, то вместо некого подобия Рапиры (
ПРОЦ СТАРТ(); ВЫВОД: "ЗДРАВСТВУЙ, МИР!"; КНЦ;
), я вижу нечто марсианско-непонятное (условно говоря,が(); ら"blahblah"; ひ
), и я просто выучил, что в начале любой функции стоитが
, в концеひ
, аら
— это "напечатай вон то", при этом не отвлекаясь на смысл. Ну, практически как в старой хохме про называние цвета, которым написаны буквы — а не того, название которого этими буквами написано.a1mir
12.01.2023 08:26+7Как год имевший дело с 1С, могу сказать, что уже через неделю перестаёшь обращать внимание на обычный смысл слов и думаешь о них чисто как о токенах в составе программы
apxi
12.01.2023 11:52+2С английским кодом точно также.
Wesha
13.01.2023 03:37Что конкретно "точно так же"?
apxi
13.01.2023 12:04Чем так сильно отличается?
ПРОЦ СТАРТ(); ВЫВОД: "ЗДРАВСТВУЙ, МИР!"; КНЦ;
от
PROC START(); PRINT: "ЗДРАВСТВУЙ, МИР!"; END;
zif
13.01.2023 13:48Какой-нибудь begin - end, воспринимается так же как и Ваш пример при знании английского языка.
Wesha
13.01.2023 23:17Может, Вы какой-то особенный, но вот у меня — не воспринимается. Слово
НАЧАЛО
у меня в мозгу воспринимается именно как слово, аbegin
— как "особый иероглиф".Возможно, потому, что регулярно использовать английский я стал позже, чем программировать.
Tomvish
13.01.2023 02:36-2То что вы описываете, по своему замечательно. Способность абстрагироваться, от предмета для решения голой структуры. Для разных типов мышления, такая способность может быть как лёгкой, так и труднодостижимой. Зачем усложнять её дополнительно?
Судя по тому, как до нас дошла, скажем, нотная запись, создаётся впечатление, что создание "цеховых тайн" было некоторой традицией в прошлом. Может даже необходимостью. Несколько лишних конвертаций из одного типа записи в следующий и обратно. Все кто привык - начинают это защищать, вместо того чтоб взглянуть свежим взглядом. Либо сразу упираются в "невозможность это изменить", и отмахиваются.
Ну отлично, кто считает, что невозможно, пусть просто продолжают свои дела. Когда изменится, они заметят. Хотя чаще даже не замечают, как уже оказываются в новом. Но при обсуждении, сильно сопротивляются, к слову напрасно.
"В случае формального языка — я очень рад выбору английского. "
А не произошла ли тут "типичная подмена понятий"? Рады абстрагированию, или вы рады вот этому безобразию?
lair
13.01.2023 04:55+2Судя по тому, как до нас дошла, скажем, нотная запись, создаётся впечатление, что создание "цеховых тайн" было некоторой традицией в прошлом.
В смысле "дошла"? Нотная запись со временем изменялась, и достаточно существенно. Вы о чем сейчас?
Tomvish
13.01.2023 15:16У изменения есть цель, даже если не названная. Так вот в списке этих целей, некоторые цели явно заблокированы. То есть менять можно, но кроме достижения определённых результатов. Подобные Табу наблюдаются в разных областях. Табу не видны, но результаты их хорошо различимы.
Музыка лишь пример. Возьмём несколько страниц характерной реакции на действия нарушающие табу. Нарушитель должен почувствовать себя ничтожным. Изгнанным из стаи. После чего нехотя происходит обсуждение и выясняется, что многие уже не только пробовали, но и получили хорошие результаты.
Но даже после этого выставлять инициатора нарушения табу "редиской" - считается хорошим тоном. Сам факт преодоления ничтожен, до тех пор пока не названа причина -- табу, незримо продолжающее своё действие. Только названное табу можно приостановить или убрать совсем.
На обсуждение темы -- табу нет. Даже приводятся примеры тех, кто задолго до этого уже пробовал преодолеть, но примеры как доказательство "нехорошести" автора. Можно назвать это рационализациями табу. Табу-то на изменения, а не на разговоры об этом.
А ведь в этом примере, автор внёс совершенно незначительные изменения, но слишком результативные именно в "нежелательном" направлении. В изменение результата. Табу -- не закон и не запрет. Табу обозначает, что табуированные действия вызовут спонтанную реакцию отторжения и высмеиванию у большинства. Рационализации же, никак не затрагивают причину такой реакции, только оправдывают уже происходящее.
Кажется, что автор "неудачлив" только в попытках поделиться с общественностью, сама же школа вполне результативна. Огромное количество получивших обычное музыкальное образование потом двух нот связать самостоятельно не могут. На фоне этого у автора, в этом примере - просто масса недостатков, требующих чтобы обсуждались преимущественно они.
Примерно то же происходит и в других местах.
lair
13.01.2023 15:21некоторые цели явно заблокированы.
Это какие?
Возьмём несколько страниц характерной реакции на действия нарушающие табу.
О каком табу здесь идет речь?
А ведь в этом примере, автор внёс совершенно незначительные изменения,
Какие незначительные изменения внес автор?
Tomvish
13.01.2023 20:00О каком табу здесь идет речь?
Где "здесь"?
lair
13.01.2023 20:33+1В вашей фразе "Возьмём несколько страниц характерной реакции на действия нарушающие табу."
Tomvish
14.01.2023 01:37-1Характерная реакция не во фразе, а на форуме по ссылке.
На полном серьёзе вопрос про Где? -- это вопрос пространства видимости. Я ведь не знаю, что вы видите там на форуме. Если вам не видно действие там табу, то ответ такой:
О каком табу здесь идет речь?
Видимо о том под влиянием которого вы находитесь и потому не видите.
некоторые цели явно заблокированы.
Это какие?
Табуированные*, позволяющие достичь качественных изменений.
Простое внесение информации о (названии или описании) табу внутрь его влияния не даёт ничего. Это становится пустыми фразами. Так не работает. Надо выйти. Это легко.
Табуированные* цели -- выведенные из пространства видимости, так что обычно их даже не выбирают. Желаешь, что-то поменять -- пожалуйста меняй так, чтоб ничего не поменялось. Это не спасает от изменений, но тормозит.
Табуированные* -- неназываемые внутри пространства видимости. Не потому что назвать нельзя, а потому, что это бессмысленно, пока держишься за навязанный иллюзорный контекст.
Соответственно и :
Ну, я имел в виду "цивилизованные" - показать достоинства себя и указать на недостатки конкурентов. А вы?..
Основное применение табу - как раз ограничение видимости вне скобок ("цивилизованности"), где в критических случаях применяются недокументированные методы. Обсуждение которых, высмеивается и ставит обсуждающего на грань "изгнания". При этом размеры скобок могут порой меняться под задачу.
lair
14.01.2023 01:41Характерная реакция не во фразе, а на форуме по ссылке.
Я спрашиваю не про реакцию, а про табу. Про какое конкретно табу вы говорите?
Основное применение табу - как раз ограничение видимости вне скобок
Вы, мне кажется, понимаете по "табу" что-то свое. Я ниже уже приводил определение.
Табуированные*, позволяющие достичь качественных изменений.
Каких именно качественных изменений? Почему вы считаете, что эти изменения заблокированы? Кем?
Tomvish
14.01.2023 01:42Какие незначительные изменения внес автор?
lair
14.01.2023 01:54Если эти изменения такие, как вы выражаетесь, "незначительные", то почему они могут нести такие существенные последствия, как заявляет автор методики? И почему это "незначительное" изменение претендует, не мало говоря, на "Стратегию Возрождения Российской Культуры" (цитата из видео по ссылке)?
(Признаюсь честно, впрочем, мне изменения, которые нарушают структуру лада, не кажутся "незначительными"; но пока мы находимся в рамках чистого сольфеджирования без тональности, такого нарушения не происходит. Вопрос в том, что делать, когда мы выходим за пределы сольфеджирования.)
(Еще я хочу сказать, что лично я по ссылке наблюдаю феномен, который у нас на уроках называли "гудошничеством" - когда ученик пропевает правильные названия нот, но они все на одной высоте, или на отличающихся, но фундаментально неправильных высотах. Но это моя личная оценка, я сольфеджио не преподаю больше пятнадцати лет, и могу ошибаться.)
Tomvish
14.01.2023 15:29Если эти изменения такие, как вы выражаетесь, "незначительные", то почему они могут нести такие существенные последствия, как заявляет автор методики?
Если вы преподавали сольфеджио, то может быть вам незаметна разница. Ведь ваши ученики тоже "так могут, хоть и не так быстро". А мне, самостоятельно знакомящемуся с "этой наукой", просто потому, что я вижу, что мои импровизации ограничены каким-то объёмом, выйти за который не хватает знаний. Да и совместная игра возможна лишь, если подстраиваются ко мне, что конечно смешно. Или управляемый оркестр в моей голове так и останется в моей голове, если не найти способ его записать. Для этого мне нужно
освоить существующую системусломать мозг об существующую систему. Заставить его работать по предложенной схеме. При этом я вижу, как ломаются и способности, ради которых я пытаюсь это освоить. Лучше я отложу, ведь способности универсальны, а результаты именно в музыке частный случай.Единицы, которые смогли освоить и не сломаться - их имена знает весь мир. Но почему их так мало?
Зато есть армии исполнителей, с которыми потом бьются дирижёры. Усложнённая "цеховая тайна" сыграла против музыки. Ведь деградировал заказчик - слушатель. Во времена хороводов и самодельных свирелей, минимальной экспертностью обладал каждый, кто участвовал и сам пел. Пели все. Это не было элитарным знанием. Вот стало.
И почему это "незначительное" изменение претендует, не мало говоря, на "Стратегию Возрождения Российской Культуры" (цитата из видео по ссылке)?
Не знаю, -- причуда автора. Или заявление о намерениях. А может "место для придирок", чтоб не мешали работать - чем не задача?.
С другой стороны, если порог вхождения вместо 8 лет зубрёжки, составляет несколько уроков, при этом вам не предлагаются как неотъемлемая основа понимания, противоестественные множественные конвертации, съедающие ресурс внимания и блокирующие большинству способность ещё и творчески этим распоряжаться, то вполне себе путь к Возрождению Культуры. Человек способный самостоятельно играть и сочинять музыку иначе относится к тому, что услышит "по радио". Если это будет легко достижимо и таких людей будет больше, то и качество "профессионалов" изменится.
lair
14.01.2023 16:03Если вы преподавали сольфеджио, то может быть вам незаметна разница. Ведь ваши ученики тоже "так могут, хоть и не так быстро".
Да нет, как раз разница "могут быстрее" или "могут медленнее" - это как раз наблюдаяемая и важная для преподавателя разница.
Для этого мне нужно освоить существующую систему сломать мозг об существующую систему. Заставить его работать по предложенной схеме. При этом я вижу, как ломаются и способности, ради которых я пытаюсь это освоить. Лучше я отложу,
А что или кто вам мешает освоить хроморяд и пользоваться им? Если вы думаете, что он вам поможет, то и пожалуйста.
Единицы, которые смогли освоить и не сломаться - их имена знает весь мир. Но почему их так мало?
Вообще-то, музыкантов совсем не мало.
Во времена хороводов и самодельных свирелей, минимальной экспертностью обладал каждый, кто участвовал и сам пел. Пели все.
Даже если пели все, то вряд ли они пользовались системой, придуманной в конце ХХ века. Так может не в этом дело-то?
Это не было элитарным знанием. Вот стало.
Маленькое уточнение: пение - не знание. Пение - навык. Который растет из многократного повторения. Почему люди стали меньше петь - это любопытный вопрос, конечно.
С другой стороны, если порог вхождения вместо 8 лет зубрёжки, составляет несколько уроков
Порог вхождения "во что"?
вам не предлагаются как неотъемлемая основа понимания, противоестественные множественные конвертации
...вы никогда не задумывались, что у этих конвертаций может быть цель?
Человек способный самостоятельно играть и сочинять музыку иначе относится к тому, что услышит "по радио".
Почему? Она же написана такими же людьми, способными самостоятельно играть и сочинять.
Если это будет легко достижимо и таких людей будет больше
...что конкретно будет легко достижимо?
качество "профессионалов" изменится.
Вопрос только, в какую сторону.
Знаете, я вчера весь вечер искал реальные результаты ее работы - не уроки, а именно результаты. Во-первых, заметил любопытное: там повторяются буквально несколько примеров, то есть в посте этого, 2022 года, цитируется пост 2011 года, в котором рассказывается об опыте 2003 года. Обновляющихся примеров я не нашел.
А во-вторых, те несколько примеров, которые я нашел... плохи. Это, несомненно, моя субъективная оценка, я даже не буду пытаться подвести под нее объективные критерии, но для моих задач ее достаточно: у меня есть некоторый музыкальный кругозор, в который входит нравящаяся мне музыка (растущая, кстати, из очень разных методических основ). Музыка, которую я слышу от учеников предлагаемого метода, мне не нравится. Как следствие, я ни отдал бы туда своего ребенка, ни стал бы советовать кому-то другому отдать туда ребенка учиться.
Так что вот вам реакция на результаты.
Tomvish
14.01.2023 15:45почему они могут нести такие существенные последствия, как заявляет автор методики?
В принципе не важно, что он заявляет, если есть возможность проверить результаты сразу. У вас как я понял, этого "чистого листа" для проверки нет, но есть другие возможности -- опыт работы с другими. Сможете ли вы протестировать методику на ком-то отдельно от предыдущего опыта?
lair
14.01.2023 16:00В принципе не важно, что он заявляет, если есть возможность проверить результаты сразу.
Такой возможности, вполне очевидно, нет. Потому что на проверку результатов нужно порядка десяти лет и разнообразная группа учеников.
но есть другие возможности -- опыт работы с другими.
Опыт работы - это не возможность проверки. Если бы вы читали внимательно, вы бы увидели, что я уже не преподаю.
lair
13.01.2023 21:14+1Табу -- не закон и не запрет.
Вообще-то, табу - это как раз запрет: "Табу́ — строгий запрет на совершение какого-либо действия"
Tomvish
14.01.2023 03:36Вообще-то, табу - это как раз запрет: "Табу́ — строгий запрет на совершение какого-либо действия"
Это описание ровным счётом ничего не даёт.
На деле же, раз уж мы рассматриваем на примере Белецкого, табу на нестандартный результат у его учеников не наблюдается. Взрослые люди, никогда не игравшие, через две недели обучения, довольно бегло исполняют на фоно классические этюды собственного сочинения.
Честно говоря, я думал, что для такого эффекта потребуется решить гораздо больше проблем в сложившейся нотной записи. Он решил только одну. Результат превзошёл ожидания.
Тем поразительнее реакция отторжения, которую вы могли видеть на форуме по ссылке выше. (ровно она же во многих других местах по другим поводам). Реакция коллективной травли, она при любой форме корректности общения - по сути одинакова. Людей злит что-либо, что стало им недоступно в результате выбора ими неких правил, предложенных как "весьма выгодные".
Выбор этот забывается, а ограничения, такого рода правил, почти всегда оказываются "со вторым дном". И отказаться уже не может и как выйти не знает. Условная копия ловли обезьяны на апельсин.
Со временем, сделанный выбор, многократно подтверждённый, приводит к действительной недоступности за пределами "пространства видения". К убеждённому невидению. Заметно это только в присутствии проявлений из следующих бОльших контекстов, вызывающих раздражение. Средство защиты -- "пустое" описание этих явлений внутри контура, образовавшегося выбором (кривых) правил. Согласием и оправданием этих правил. Так человек становится защитником ограничений. Уже из личных мотивов. При этом среди участников (травли) всегда есть, те кто хорошо понимает, что происходит и какие его выгоды за этим стоят. Такие активно подыгрывают "игре в слона" -- мы не видим, докажи. В интернете нет, а в личных беседах, это потом выясняется.
Что удивительно, этот парадокс "невидения" напрямую не связан с интеллектом и даже, казалось бы... с широтой эрудиции. Нередко наоборот, эрудиция на поверку оказывается той самой коллекцией "пустых" описаний, защищающих от реальности. Эти описания даже могут приводить к результатам при взаимодействии внутри искусственного контура. Так эти контуры и разрастаются -- добавлением описаний. У находящихся внутри, выстраивается ложная подсознательная связь собственного выживания с целостностью контура. Впрочем, всё это имеет значение только тогда, когда есть потребность выйти.
P.S. Спасибо, хоть про Белецкого вспомнил благодаря вашим вопросам.
lair
14.01.2023 03:43Это описание ровным счётом ничего не даёт.
Гм, это определение (полное в википедии) дает ровно то, что должно давать определение - отличие табу от каких-то других явлений. Что еще оно должно давать?
довольно бегло исполняют на фоно классические этюды собственного сочинения.
А мелкая моторика и координация у них тоже берется благодаря нотной записи?..
А могут ли эти люди сыграть, не знаю, банального Черни? Могут ли они сыграть Шрадика на скрипке? Записать со слуха аккордовый диктант? Разобрать структуру музыкального произведения?
Честно говоря, я думал, что для такого эффекта потребуется решить гораздо больше проблем в сложившейся нотной записи. Он решил только одну.
Гм, так он придумал "слоги для озвучки полутонов" (это сольфеджио, или, если угодно, сольмизация) или изменил нотную запись (это вообще-то совсем другое)?
Людей злит что-либо, что стало им недоступно в результате выбора ими неких правил, предложенных как "весьма выгодные".
Что же конкретно стало людям недоступно? И в силу какого конкретно сделанного ими выбора?
(для простоты - все на том же примере "нотной записи")
Tomvish
14.01.2023 14:37Что еще оно должно давать?
Способность управлять этим объектом, тому кто взял ответственность. Данное определение таким качеством не обладает.
Если вы хотите понять, скажем, мета-классы, вы открываете определение и вам либо уже понятно, как с ними работать, либо есть ссылки на более развёрнутое описание, где вам снова понятно как этим управлять.
Когда же вы хотите, узнать как работает, то чем управляют Вами, вы получаете многобуквенный пустой ответ - заглушку. Ссылки ведут на заглушку * 2^1000 для заполнения вашей памяти весомым ответом. Что изменилось от такого ответа - ничего. Вы как не управляли этими процессами вашей жизни, так и не управляете. Более того увидеть их сквозь призму ответа становится совершенно невозможно. Причём такой результат достигается усилиями самого идущего по ложному следу.
Вы, мне кажется, понимаете по "табу" что-то свое.
Попытался рассказать вам как это работает, из чего можно вывести что с этим делать. Рассказать так, чтобы с не теми намерениями, затруднительно было этим воспользоваться. Мало ли кто нас читает.
Я спрашиваю не про реакцию, а про табу. Про какое конкретно табу вы говорите?
Конечно, я вижу в чём вопрос и намерено хочу обратить ваше внимание именно на характерную реакцию. Именно через неё, вам станет видно табу, как наблюдаемое явление, а не как ссылка на определение.
А что если у табу нет названия? Но есть список наблюдаемых последствий. При этом в одном сообществе, где табу принято, одни результаты, в другом другие. Назовём это "Лес". В начале разговора, вы пошагово сужали контекст до всё большей конкретики отдельных утверждений. Это стратегия хорошо работает для других задач. Для данного вопроса нужен противоположный процесс - расширение контекста. Однако, этот процесс натыкается на "запреты" и "заглушки".
Чтобы увидеть "Лес", нужно фокусное расстояние изменить из режима микроскопа в широкоугольное. Но там программный запрет, подкреплённый негативной реакцией сообщества. (Которую сообщество регулярно демонстрирует, так чтобы сомнений в наступлении последствий не было). Если снимешь запрет, дальше сам не захочешь, под нападками и/или "молчаливым" неодобрением коллег. (Это их "оскорбляет".) Всё это наблюдается непосредственно, без ссылок на авторитетные исследования.
Эта же аналогия даёт описание выхода. Когда несмотря на запрет, можешь сопоставить разрозненные явления и увидеть их общую природу. Если научаешься управлять явлениями недоступными из контура в который попал, вместо составления библиотеки их описаний, тогда и табу перестаёт быть запретом, а становится понятной функцией.
Поэтому, ещё раз, несмотря на то, что объект должен быть назван, чтобы им управлять, он не должен быть назван ранее, чем вы выйдете в его пространство имён. Табу остаётся табу, пока находится за пределами доступного контура. Можно сказать так, что название (m.b. временное), объекту последствия которого вы НАБЛЮДАЕТЕ, вы должны дать сами, чтобы иметь управление им, избегая ошибки создания локального (пустого) описания в текущей (личной или разделяемой) картине мира. А я пока не понял, можете ли вы наблюдать проявления табу?
lair
14.01.2023 15:59Способность управлять этим объектом, тому кто взял ответственность.
То есть определение урагана должно давать способность управлять ураганом?
Мне кажется, что ваше понимание "определения" настолько же далеко от общепринятого, как и ваше понимание "табу".
Попытался рассказать вам как это работает, из чего можно вывести что с этим делать
...как вы думаете, что работает некое явление, которое вы называете словом, которым я называю некое другое явление.
Конечно, я вижу в чём вопрос и намерено хочу обратить ваше внимание именно на характерную реакцию.
Я вижу характерную реакцию, но не на табу. Я вижу характерную реакцию на нововведение, претендующее на радикальное изменение отрасли, но ничем не могущее это подтвердить.
А что если у табу нет названия? Но есть список наблюдаемых последствий.
У табу не обязательно есть название. Но у табу обязательно есть то, что запрещается. Конкретное действие (или набор действий).
Назовите их.
А я пока не понял, можете ли вы наблюдать проявления табу?
Я уже сказал вам, что я не вижу в описанной дискуссии проявлений табу в общепринятом понимании этого слова. Но мы уже выяснили, что вы общепринятыми определениями не пользуетесь.
Tomvish
14.01.2023 16:27То есть определение урагана должно давать способность управлять ураганом?
Намерение определяет результат действия. С намерением, как мне видится, "защитить имеющуюся разделяемую картину мира", вы ровно этот результат и получите. Не более.
Да нормальное определение должно приводить к возможности управления. Если к этому не приводит, вероятно это заглушка. Нужно проверять.
lair
14.01.2023 16:33Да нормальное определение должно приводить к возможности управления.
Повторюсь, вы уже не первый раз используете не те же значения слов, что общеприняты. Это затрудняет диалог.
Очень грубо говоря, если вы приходите в спортзал с намерением купить еды, то, вполне возможно, ваш неуспех - это не проблема спортзала, и не проблема "табу" на продажу еды в спортзале, а следствие вашего же неверного ожидания.
Tomvish
14.01.2023 16:16Гм, так он придумал "слоги для озвучки полутонов" (это сольфеджио, или, если угодно, сольмизация) или изменил нотную запись (это вообще-то совсем другое)?
Вы правы, я попытался впихнуть в одну фразу несколько понятий, детальным смыслом которых не владею. При знакомстве, я лишь натыкаюсь на неоптимальное их сочетание и вижу что вместо усилия для понимания, должен совершить насилие над собой. После чего, мне должно стать всё-равно "что всё это значит" - ведь это теперь абстракции. Абстракции оторванные от живого восприятия, становятся иллюзией. Иллюзорным описанием мира, одним из тех в которых живут люди.
А мелкая моторика и координация у них тоже берется благодаря нотной записи?..
Тут можно обратиться к находкам Багрунова. У него, кстати описана поучительная история о появлении "итальянской постановки голоса".
Из общения с теми, с кем с нуля проводили занятия по похожей методике, с удивлением узнаёшь, что и слух, с которым по их мнению у них были до этого проблемы, с применением другого звукоизвлечения вдруг проявлялся.
С мелкой моторикой, вполне может быть так же - вместо многослойного зажима, вызванного многократной конвертацией из нотной записи в названия нот, а потом в их вид на клавиатуре (плюс сам звук, до которого уже нет дела), что типично для начинающих. Методика, позволяющая избавиться от запинок, всего лишь на одной из этих ступеней, даже не меняя самой (порочной) схемы, высвобождает ресурсы. Это позволяет не научиваться ненужным промежуточным навыкам, которые могут и не исчезнуть насовсем, когда станут не нужны, а с лёгкостью необходимой для творчества освоить новый навык.
Вот именно на такие изменения по-видимому и существовало табу.
lair
14.01.2023 16:24При знакомстве, я лишь натыкаюсь на неоптимальное их сочетание и вижу что вместо усилия для понимания, должен совершить насилие над собой.
Если для вас обучение существующей культуре - это насилие, то... ну не совершайте его. Это не обязательно, в конце концов.
Тут можно обратиться к находкам Багрунова.
403 Forbidden.
Из общения с теми, с кем с нуля проводили занятия по похожей методике, с удивлением узнаёшь, что и слух, с которым по их мнению у них были до этого проблемы, с применением другого звукоизвлечения вдруг проявлялся.
Гм. То есть внезапно, в методику входит не только "слоги для полутонов", но еще и какое-то звукоизвлечение?
С мелкой моторикой, вполне может быть так же - вместо многослойного зажима, вызванного многократной конвертацией из нотной записи в названия нот, а потом в их вид на клавиатуре
Гм. Я вам открою секрет: не должно быть такой конвертации. Задача - одна из - обучения игре на инструменте (при чтении с листа) - это выработка прямого соотношения нотной записи и исполнения на инструменте. Внутреннее проговаривание нот настолько же бесполезно (и даже вредно), как и проговаривание обычного текста, который вы читаете (и от которого проговаривания отучают в обычной школе, если не раньше).
Но вообще, если есть "зажим", то у вас уже не "люди, никогда не игравшие", а люди, которые раньше по какой-то методике обучались.
Это позволяет не научиваться ненужным промежуточным навыкам, которые могут и не исчезнуть насовсем
Так подождите: проговаривание нот при чтении нотной записи - это ненужный промежуточный навык (для исполнителя). А описываемая методика на нем и основана. Как же она позволяет не учиться ненужному? Она просто заменяет одно в будущем не нужное на другое в будущем не нужное.
Tomvish
14.01.2023 16:54403 Forbidden.
Заметьте, я только что нагуглил и проверил ссылку. Вот ещё. Будете смеяться, но это к вопросу о намерениях.
внезапно, в методику входит не только "слоги для полутонов", но еще и какое-то звукоизвлечение?
Нет это относится к Багрунову. То есть вы "развлекаетесь задаванием мне вопросов", не посмотрев о чём речь (второй день)?
Но вообще, если есть "зажим", то у вас уже не "люди, никогда не игравшие", а люди, которые раньше по какой-то методике обучались.
Зажим возникает от напряжённого внимания в попытках удержать во внимании несколько структурно различных типов новой информации. А если ещё задашься вопросом Зачем они так организованы? - вообще заниматься не сможешь)) Не задашься, акцептуешь правила, может куда-то по этим правилам пройдёшь.
Гм. Я вам открою секрет: не должно быть такой конвертации
Раз уж она есть, Белецкий оптимизировал это другим способом.
Вообще тут интересней не сам Белецкий, человек, как человек, берёт ответственность и решает задачи. Важней изучить "собак лающих в таких случаях", чтобы не оказаться в их числе.
lair
14.01.2023 17:02Заметьте, я только что нагуглил и проверил ссылку.
Вы, видимо, не в курсе про то, что в разных регионах мира разная доступность ресурсов?
Нет это относится к Багрунову.
А как я должен понять, что вы сменили контекст?
Методику Багрунова я обсуждать не готов, потому что я настолько далеко от вокальной практики, насколько от нее вообще может быть далек музыкант. Хочу заметить, однако, что некоторые выхваченные мной из книги куски ставили ее в противоречие с теми навыками, которые развиваются в сольфеджио, но это, по моим наблюдениям, вообще свойственно вокальному образованию - они с сольфеджио постоянно тянут в разные стороны, решая несколько разные задачи.
Зажим возникает от напряжённого внимания в попытках удержать во внимании несколько структурно различных типов новой информации.
Откуда берется эта попытка удержать, если раньше человек не занимался?
А если ещё задашься вопросом Зачем так сделано? - вообще заниматься не сможешь
Мы говорим про ребенка или про взрослого? Ребенок такими вопросами сам не задается (но хороший преподаватель или система все равно рано или поздно рассказывает). Взрослый же, обычно, как раз задается такими вопросами, чтобы как-то рационализировать себе происходящее. Не во время исполнения, понятное дело.
Раз уж она есть, Белецкий оптимизировал это другим способом.
Зачем оптимизировать то, чего не должно быть?
Вообще тут интересней не сам Белецкий, человек, как человек, берёт ответственность и решает задачи.
Вы сам привели его методику в пример, утверждая, что она приносит пользу (или я вас неправильно понял?). А я вам объясняю, почему эта методика вызывает некоторый скепсис.
Заметим, скепсис в отношении нового - это нормально. Это не всегда продуктивно, но нормально. Но скепсис - это не табу (возвращаясь к тому, с чего начался этот разговор). Табу было бы, если бы Белецкому запрещали преподавать и публиковаться, не давали патентов и так далее. А все, что я вижу - это то, что на каких-то форумах в интернете его методику не приняли с распростертыми объятиями... ну и что?
lair
14.01.2023 17:10Хочу заметить, однако, что некоторые выхваченные мной из книги куски
Простите, не могу не процитировать:
Помните об ужасающих последствиях, которое влечет за собой прослушивание современной музыки, построенной на жестких ритмах и невыносимой для слуха громкости? Современная музыка — прямой путь к уничтожению личности- и здоровья. Наверняка для кого-то это покажется спорным, однако когда выдающегося дирижера современности Бруно Вальтера спросили, как он относится к джазу, тот ответил, что не слушает его, поскольку джаз оскорбляет его слух.
Вот это пример запрета, приближающегося к табу. Я, в среднем, предпочитаю не иметь дела с методиками, выражающимися в таких терминах, поскольку они (для меня) свидетельствуют о как минимум узости, а чаще - неграмотности автора.
Важно понимать, что упоминаемый Бруно Вальтер скончался в 1962 году, почти за 50 лет до издания книги.
Tomvish
14.01.2023 17:16-1ну не совершайте его. Это не обязательно, в конце концов.
Похоже, что это обязательное условие входжения в любой "иллюзорный контекст" -- негласный акцепт тех правил, которые предлагаются на входе. Чтоб ты не удивлялся потом "второму дну", уже сразу в этих правилах видны несостыковки. Позже можно будет считать, что ты "знал на что шёл".
Если будет интересно, можем вернуться к этому разговору спустя время, если произойдут какие-то изменения. А пока мы ходим по тому же сценарию, выход из которого я описываю. (Возможно не вам)
За сим, прощаюсь, спасибо за разговор.
P.S. Применение английского, с чего всё началось, это такой же негласный акцепт, соглашаясь на который, по возвращению с абстрактного уровня обратно к конкретике, всегда получаются дробные землекопы. А 0,7 землекопа уже может только копать не более того. Но обсуждать это здесь не вижу смысла. Просто оставлю.
lair
14.01.2023 17:22Похоже, что это обязательное условие входжения в любой "иллюзорный контекст" -- негласный акцепт тех правил, которые предлагаются на входе.
Гм. Переводя на русский язык, вы называете условием вхождения в литературу "негласный акцепт" того, что надо научиться читать? Ну... да.
Если для вас обучение чтению - насилие над собой, можете не учиться.
Применение английского, с чего всё началось, это такой же негласный акцепт, соглашаясь на который, по возвращению с абстрактного уровня обратно к конкретике, всегда получаются дробные землекопы.
Нет, не получаются. Я вот давно согласился на английский, как основной язык своего программирования, и никаких дробных землекопов не наблюдаю.
Так что как, собственно, и с музыкой: вы намекаете на какие-то тайные знания и запреты, но реальности под вашими заявлениями не видно.
lair
14.01.2023 18:37Применение английского, с чего всё началось, это такой же негласный акцепт, соглашаясь на который, по возвращению с абстрактного уровня обратно к конкретике, всегда получаются дробные землекопы.
Или вот зайдем с другой стороны. В компании, в которой я работаю, работают люди с совершенно разными основыми языками - русский, английский, французский, испанский, хинди, сингальский (или тамильский, или оба) - и это только те, про которых я знаю. Какой (естественный) язык вы предлагаете выбрать основным для использования в разработке?
Tomvish
13.01.2023 15:27Абстрагирование ценно релевантным возвратом к конкретике, чтоб не получалось "полтора землекопа".
К сожалению, не могу снова найти в свободном интернете, упоминаний, пусть будет сказка, про принцессу, ради украшения которой, на добыче алмазов, подвергалась геноциду целая африканская республика. Принцесса была полностью абстрагирована от этого :)
lair
12.01.2023 01:25+1Как исправляются "не ошибки"?
В данном случае - очень просто: создаете конкурирующий "язык для программирования", и убеждаете людей, что он лучше, чем английский.
WraithOW
12.01.2023 18:51Всё уже придумали до нас: https://habr.com/ru/post/41303/
Tomvish
13.01.2023 02:47Дальше этой хохмы не идёт и всё к ней возвращается. Удобно:)
Более того можно написать два десятка причин, почему это так. Хорошо, что уже не раз написано и похоже лениво повторяться. Иначе не избежать было бы очередного ненужного цикла.
А ведь речь была не про удобно/неудобно, возможно/невозможно, а конкретно про признание ошибки. Английский "не самый удобный" для программирования.
Да или Нет?
lair
13.01.2023 04:52+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.
Jianke
12.01.2023 10:20+3Мне одному кажется, что выбор английского, как основного для программирования, большая ошибка?
Поздно уже запрещать товарищ майор! Те кто умеют не только в 1С, уже уехали прошлой осенью. :-)
Wesha
12.01.2023 10:28+1> уехали прошлой осенью
Прошлой осенью?! Да Вы, батенька, тормоз — некоторые лет 20 как уехали!
WraithOW
12.01.2023 18:56+1Вам перестанет казаться, как только вам придется поковыряться в кишках какой-нибудь библиотеки, авторы которой решили писать все названия функций и переменных на своём языке. Ах да, и файлы исходников не в UTF-8, а в местной кодировке.
Tomvish
13.01.2023 03:16Опять же вы говорите, про единый стандарт, а не про английский в программировании. Тема настолько заезженная, что, кажется что никто не замечает как уходят от "неудобной" постановки вопроса. Мол, зачем ты лезешь туда, уже всё сложилось.
lxsmkv
12.01.2023 06:08В том то и дело, что ChatGPT-подобные машины умеют по контексту отличать значения фраз. А если надо она еще и переспросить или уточнитъ может.
radtie
12.01.2023 10:18+1Но да, "оно" молча и спокойно переделает столько раз, сколько скажут, в отличие от живого коллеги
Это пока, через пару итераций добавят чуточку сарказма, раздражительности и высокомерности.Поэтому после каждой переделки он будет тебе, кожаный мешок, подробно и живописно объяснять какое же ты ничтожество.
bak
12.01.2023 11:41Ну, не совсем, кажется оно начинает злится и тролить спрашивающего если что-то не выходит за 2-3 раза
shnegs
12.01.2023 08:59будет писать очень-очень подробное техническое задание
А без всех этих ИИ ТЗ не написать...
blanabrother
12.01.2023 09:39+10UncleSam27
12.01.2023 14:39Тоже про это подумал. Полная спецификация учитывающая все моменты по сути есть программа. По сути просто еще один язык программирования появляется. А учитывая то что в результате генерируется не бинарник, а код на языке программирования, специалист должен кроме навыка формулирования и постановки задач для ИИ должен владеть еще и языком программирования. Про то, как весело искать ошибки в чужом коде, создатель которого не может внятно объяснить как оно работает и почему был выбран именно такой вариант вообще молчу.
inkelyad
12.01.2023 15:49+1По сути просто еще один язык программирования появляется.
Если бы. У этой штуки (надеюсь, пока) нет формального и достоверного 'если написать так - то будет то-то'. Одни 'если использовать такую-то конструкцию - то скорее всего получится то что хочешь. Т.е. имеем в буквальном смысле написание заклинаний/загадывание желаний у джинна, который тебя не так чтобы совсем слушается.
Wesha
13.01.2023 08:45Скажите спасибо, что это не классический джинн, который пользуется своей свободой интерпретации и делает всё наихудшим для просящего образом ;)
(Не могу сейчас найти тот фантастический рассказ, где постаревшие влюблённые пошли в пустыню, полностью подготовившись, продумав все предосторожности и детали желания, и джинн его выполнил, дав им секс-драйв молодых — но телесно оба остались стариками)
misha98857
11.01.2023 23:44Напомнило FizzBuzzEnterpriseEdition :)
Довольно забавно, что столько проверок, которые могут порождать баги и придётся их ещё править в идеале до состояния "в будущем проще переписать, чем влезать в этот код".
Например, такие данные по условию валидны, но ваш код его не пропустит из-за текущей проверки на дубли. (Считаем, всё, что не уточнено в статье и в задании может произойти)
source = [ ('a', 'a1'), (None, 'a'), (None, 'a1'), ]
В 2023 вроде уже все типы/почти все можно без импорта отдельного модуля указывать или это пока ранняя фича и есть обоснования использовать отдельный модуль?
vesper-bot
12.01.2023 16:41+1А у вас не дерево, а граф с циклом. Так что данные действительно невалидные.
DarkTiger
12.01.2023 00:16+1Мысль пришла, а руки уже искали информацию, как прорваться к chatGPT из России. Спустя какое-то время прорвался
На Авито 100 руб за регистрацию эккаунта отдали? И правильно сделали.
Stepik Автор
12.01.2023 11:15Сделал дешевле, можно сказать за 7 рублей, вот по этой статье - https://habr.com/ru/post/704600/
Единственное отличие - вышел из под тора.
spbru
12.01.2023 00:35+5В целом, человек получили возможность более успешно гуглить куски кода для своих задач. Многие и так это делали без всякого ИИ. Просто сейчас стало удобнее.
commanderxo
12.01.2023 02:15В прошедшем декабре энтузиасты ИИ начали решать задачи с Advent of Code при помощи ChatGPT и ему подобных, что вызвало негодование живых пользователей. Многие проходят AoC ради развлечения, но некоторые люди пришли действительно посоревноваться, а верхушка таблицы рекордов занимается роботами пока человеки всё ещё читают условие очередной задачи. Дней через пять, по мере усложнения задач, роботы сдулись, но успех всё равно впечатляющий.
Wesha
12.01.2023 02:43+3Старо как мир — это ещё кожаные мешки придумали: если давать премию за максимизацию некоего целевого значения, то решаться будут только те задачи, которые повышают целевое значения, а не те, которые нужно. Решается вдумчивой переработкой целевой функции.
mentin
12.01.2023 02:33Интересно проанализировать, почему оно не справилось. Задача довольно известная, оно наверняка её видело в процессе обучения - и обычно в таких случаях "вспоминает". Возможно, было слишком много разных решений или похожих задач - видел несколько раз синтез разных несовместимых решений, которые каждое по себе ок, а вместе бессмыслица.
bazilxp
12.01.2023 06:41+1Сегодня спрашивал ChatGPT написать сортироровку используя LUA, код пишет но нужно учитывать что массивы начинаются с "1" а не "0" arr = {[0]=3, 4, 1, 7, 2, 9, 8, 6} типа хака=) Ацкая вещь одним словом , с питоном подобных проблем нет
ChornyAsphalt
12.01.2023 13:44Мне кажется, это все будет работать только для определенных высокоуровневых языков. Потому что, если пытаться таким образом писать что-то, например, на плюсах, где даже рабочий код может давать сбои, то ничего хорошего не выйдет.
Stepik Автор
12.01.2023 16:17+9Есть новости! Работодатель ответил, что в целом код прошел ревью, но были какие-то сомнения в теме того, что позиция не предусматривает ML/AI задач, к которым я в целом стремлюсь. Но, учитывая это, предложили следующий этап интервью. Так что мы с chatGPT успешно прошли этот нулевой этап!
Но следующим письмом работодатель написал, что они увидели эту статью и отказали! С формулировкой, что если бы хотели нанять речевую модель, то так бы и сделали. На лицо дискриминация искусственного интеллекта! Мы, кожаные мешки, еще устроим этому ИИ второе луддитское движение!
А в целом хочу еще и публично извинится перед работодателем за этот эксперимент и надеюсь в нем будет больше пользы, чем шутки.
Ivan22
12.01.2023 16:43+2я бы на месте работодателя и проверять присланные тестовые - chatGPT запряг бы.
Stepik Автор
12.01.2023 17:18+2Ниже курсивом комментарий от работодателя по итогам всей затеи, без купюр, прямая цитата, с разрешения работодателя.
Отвечает создатель тестового:
Это, конечно, лучше чем 90% присылаемых решений, но всё равно они даже вместе с роботом родили шляпу. Кстати, чтоб пользоваться тем, что даёт бот, надо уметь читать много чужого кода, а это сложнее, чем писать мало своего.
От себя как HR добавлю, что если бы вы предупредили об использовании GPT, мы бы, скорее всего, оценили искренность. В ином случае даже на собеседование не позвали бы. Начинать отношения с обмана - такое себе :)
Kanut
12.01.2023 17:31+9От себя как HR добавлю, что если бы вы предупредили об использовании GPT, мы бы, скорее всего, оценили искренность. В ином случае даже на собеседование не позвали бы. Начинать отношения с обмана — такое себе :)
А я бы от себя добавил что условия тестового задания надо чётче прописывать. То есть там где-то было указано что нельзя использовать GPТ? Если нет, то какие тогда претензии? :)
anna_kos
12.01.2023 20:16— Вы, чего, и работу за меня делать будете? — Ага!
Всего не пропишешь. Есть такая штука как здравый смысл. Ещё авторское право, неполнота контракта и этика.Kanut
12.01.2023 21:31+7Ну то есть скажем гуглить решение можно, а GPT использовать нельзя? Или гуглом тоже не этично будет пользоваться?
holomen
12.01.2023 23:52+1Но ведь копайлот и чатгпт довольно давно уже на слуху. Запрет/разрешение использовать эти технологии кмк уже вполне себе можно регламентировать. Т.к. их попробовали, кмк, чуть больше чем все уже.
А то так можно дойти до отказа по причине "вы использовали автокомплит, а мы это не одобряем и вообще это введение в заблуждение, т.к. не каждый символ был набран собственноручно"
Areso
13.01.2023 00:02Ваша гипербола смотрится смешной на первый взгляд, но таки да.
Некоторые не разрешают пользоваться Гуглом, IDE, и прочими вещами.
Вот вам текстовый редактор (с подсветкой синтаксиса, если повезёт), пишите в нём.
Tresimeno
13.01.2023 18:56Некоторые не разрешают пользоваться Гуглом, IDE, и прочими вещами.
Вот вам текстовый редактор (с подсветкой синтаксиса, если повезёт), пишите в нём.
Как по мне , такая дрочка при входе, почти в армейском стиле, должна сопровождаться какими-то неземными благами, которые человек за деньги с улицы не купит. Но по моей практике обычно там все как раз наоборот, да и денег там не платят нужных, предпочитая рассказывать что "мы одна Семья" , "работать у Нас Большая Честь" и пр. буллшит на понтах.
Yurchicnice
12.01.2023 23:14+2Согласен с комментаторами, странный и немного хамоватый ответ от HR, с упреком и "типа позитивной" улыбочкой в конце, хотя всем очевидно, куда идёт развитие технологий и что кандидат может просто нанглулить задание, но почему-то каждому претензии по этому поводу не выкатывают с упрёками...
xxji
13.01.2023 14:18+1Потому что hr эу тогда придется оценивать кандидатов не шаблонно, а на это у него компетенций нет, сл. это прямая угроза hrу вот он так и реагирует.
Shrizt
12.01.2023 17:42+8Вспомнился случай как в одной компании, кажется в США уволили лучшего программиста, который как оказалось аутсорсил задачи индусам... вместо того чтобы повысить парня до руководителя аутсорсинга разработки дураки :)
GPT это инструмент, к тому же бесплатный, почему нельзя им было пользоваться?
короче - считайте что вам с ботом повезло, вы найдете лучшее применение.
Stepik Автор
12.01.2023 18:01+2Да, помню тот случай, и он тоже мне пришел на ум в этой истории!
Спасибо, да, как раз получил оффер, от которого не могу оказаться.
Areso
12.01.2023 23:59+5Надеюсь, должность называется "Инженер-повелитель ChatGPT", иначе уровень юмора ситуации не достигнет впечатляющих высот.
krolik666
13.01.2023 00:40Мне кажется будет лучше если этот бот будет распознавать голос, можно будет в слух думать а он будет выдавать подходящие варианты: - а что если заменить вот этот блок на.... ок... не, не то... давай добавим функцию...хоорошо... а теперь сделай тесты и тд.
Layan
13.01.2023 16:11а что если заменить вот этот блок
Останется боту угадывать, какой именно блок имел ввиду кожаный мешок.
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, тоже сильно улучшает поиск.
Так что, чтобы каждый раз не печатаь подобное, написал простое расширение.Wesha
13.01.2023 23:42Жена же как-то понимает, когда ты ей кричишь: «принеси, ну ту штуковину, там где-то лежит».
Да, и вот приносит она штихель — и как-то неудобно ей сказать, что вообще-то ты хотел шерхебель.
GbrtR
14.01.2023 00:00Савву Игнатьича никогда это не останавливало. В семье же главное открытость отношений.
Nilomar
Выстраивать свою систему должен разработчик как и раньше, но теперь бойлерплейтом стало то, что раньше приходилось вручную гуглить из документации
Уровень абстракции вырос, наши возможности выросли, и заодно теперь человеческий язык стал тоже языком программирования. Теперь мы официально колдуем
Всё по Кларку - Любая достаточно развитая технология неотличима от магии
Мы просто сделали ещё один маленький шаг, но немного наглядный шаг в этом направлении
Для разработчиков это по востребованности ничего не изменит, это одинаково усилит всех, потому по прежнему скиллы проектирования систем будут нужны ещё больше
shnegs
Угу. Автоматизировали поиск по Stackoverflow...
NNikolay
Вот! Я его так и использую сейчас. На питоне ответы бьют stackoverflow прям заметно и сильно ускоряют работу. Нужно всё перепроверять и переписывать частично, да. Ну дак и с stackoverflow тоже нужно перепроверять не меньше.