Рекурсия и многопоточность?

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

Deimos
постоялец
Сообщения: 174
Зарегистрирован: 16.01.2010 23:31:30

Рекурсия и многопоточность?

Сообщение Deimos »

просматривая наблюл тему и почитав хочу спросить...


я нашел где я об этом читал. https://megamozg.ru/post/23556/
крайне запутанная история, там один знает, что другого удурчает, что кто то из hr в инете поябедничал - не умеют программисты программировать.


А как часто Вы используете это в реальных проектах?....

Отпишусь сам...

Рекурсия - НУ КРАЙНЕ РЕДКО...

Потоки - бывает (при солидных объемах вычислений выгода очевидна), но не шибко-часто...

Спрашиваю только из любопытства (и пишу в потрепаться).

Просто интересен реальный опыт близких по осмыслению...

P/s/ 3/5/7 - напишу на бумажке менее, чем за минуту...

а.... Еще-вот отпишусь (и спрошу за одно)... Какая разница, на каком язык программировать (паскаль люблю с детства :) ), если почти-любую задачу в программировании можно решит посредством почти-любого языка? (узкие не берем - ассемблер не переплюнуть)
Аватара пользователя
Verx0Laz
постоялец
Сообщения: 125
Зарегистрирован: 11.09.2007 11:24:07

Сообщение Verx0Laz »

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

зы
Кстати, ту-же самую работу запросто можно было проделать сейчас на лазаре, если бы понадобилось... единственное исключение - под управление через динамическую библиотеку пришлось бы уламывать разраба собрать вместе с длл-кой еще и со-шку под пингвинчика...
Mirage
энтузиаст
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia
Контактная информация:

Сообщение Mirage »

Deimos писал(а):А как часто Вы используете это в реальных проектах?....


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

Deimos писал(а):Какая разница, на каком язык программировать


Ну, запросы к базе на императивном языке неудобно писать.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

Deimos писал(а):Какая разница, на каком язык программировать

Проблема не в написать, а проблема в поддерживать (добавлять исправлять баги/улучшать/добавлять новые фичи).
Ну и поставленная цель тоже решает.

Например! Если в команде 10 человек, и два из них знают Си++, а остальные восемь знают Visual Basic, то
* на каком языке лучше писать программу типа "гламурный калькулятор" ?
* на каком языке лучше написать драйвер устройства ?

ЗЫ: обращаю внимание что "улучшать" и "добавлять новые фичи" это разные вещи :mrgreen:
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

ИМХО, основное требование к программированию - долгая и цепкая концентрация (вплоть до умения "отключиться" от внешнего мира "по щелчку") внимания, причем сразу на нескольких объектах. Именно на этом идет основная нагрузка и основное "выжатие как лимона".
Людям со стороны описываю весь процесс как эдакое ежедневное составление (не разгадывание!) кроссвордов :)

ПС: ИМХО, лучший тест профпригодности программиста - игра в тетрис-арканоид-оффлайн-шутеры на высоких уровнях сложности :)

Если в команде 10 человек, и два из них знают Си++, а остальные восемь знают Visual Basic, то

Это не команда. Если удастся договориться без скандала и, не дай бог - будущего кидалова-откоса - ОЧЕНЬ повезет.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

debi12345 писал(а):Это не команда. Если удастся договориться без скандала и, не дай бог - будущего кидалова-откоса - ОЧЕНЬ повезет.

ну хорошо. усложним задачу:
в команде 10 человек, и два из них знают Go, а остальные восемь знают Object Pascal (пример из реальной жизни, между прочим)

Добавлено спустя 2 минуты 19 секунд:
debi12345 писал(а):программированию - долгая и цепкая концентрация (вплоть до умения "отключиться" от внешнего мира "по щелчку") внимания, причем сразу на нескольких объектах

аха. тут сразу возникнет конфликт о том, что есть "программирование" и кто есть "программист" (особенно в сегодня).
Ибо внимание на несколькиъ объектах сразу обычно сосредотачивает архитектор проекта.
pupsik
энтузиаст
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13
Контактная информация:

Сообщение pupsik »

лучший тест профпригодности программиста
:lol:
А факторы профпригодности? Т.е. проигравший, выигравший, метнувший.....
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

А факторы профпригодности? Т.е. проигравший, выигравший, метнувший.....
====================
Просто долго выживший - а для этого сумевший включить дополнительные скорости [=выкроить дополнительное время]. Например играющий одну партию в тетрис не прерываясь и с повышенеи уровней с течение часа и более :)
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Deimos писал(а):Рекурсия - НУ КРАЙНЕ РЕДКО...

У меня данные, как правило - дерево.
Рекурсия само то.

Так что, рекурсия - регулярно.
azsx
энтузиаст
Сообщения: 959
Зарегистрирован: 16.11.2015 05:38:32

Сообщение azsx »

А как часто Вы используете это в реальных проектах?....

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

оффтопик логично, что умнение писать сервелеты java - это значительный плюс к трудоустройству.
просто напомню, что языков и диалектов программирования около 3000. Из них реально популярны 10-20 языков. И паскаля по статистике в них нет. Зато есть напрочь опустившияся планка к задачам, которые решают программисты. То есть если язык программирования может читать данные с диска и бд, хоть как то может юзать устройства пк и выводит инфу на экран - то язык более чем годен для написания любой офисной задачи. Если бы менеджер прибегал узнать управлюсь ли я за неделю, надо решить 2 задачи, сделать выборку из неструктурированных логов на 50 тб и потом обсчитать результаты на видеокартах на 15 пк с выводом хотя бы приблизительно достоверного результата - я бы сильно засомневался, что на любом языке программирования можно написать ваще всё одинаково легко.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

azsx писал(а):зы сам я юзаю рекурсию не часто, так как я стараюсь избегать опасных моментов в коде.


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

azsx писал(а):я бы сильно засомневался, что на любом языке программирования можно написать ваще всё одинаково легко.


А кто говорит о легкости? Просто о возможности.
azsx
энтузиаст
Сообщения: 959
Зарегистрирован: 16.11.2015 05:38:32

Сообщение azsx »

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

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

внутри майнкрафт уже ОС пишут. Хотя это возможно, тем не менее минимальная целесообразность - да нафиг надо!
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

Минус рекурсии - плохо кэшируемая лавинообразная накрутка-раскрутка стека и неиспользование регистровых переменных. Можно применить компромисс - рекурсивно найти массив указателей на элементы дерева, и затем применить к ним(найденным элементам) нерекурсивную фукцию.
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

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

А из-за памяти не проиграем? O(N) против изначальных O(h) с деревом высоты h.
azsx
энтузиаст
Сообщения: 959
Зарегистрирован: 16.11.2015 05:38:32

Сообщение azsx »

очередной пример зачем нужна рекурсия на собеседовании https://habrahabr.ru/post/276673/

Код: Выделить всё

          1
         / \
        2   3
      /     / \
     4     6   7


Нужно связать все узлы по горизонтали, слева направо, чтобы получилось:

          1-> Nil
         / \
        2-> 3-> Nil
       /   / \
     4 -> 6-> 7-> Nil


Каждый узел может быть описан в виде:

function Node(data) {
    this.data = data;
    this.left = this.right = null;
    this.neighbour = null;
}


Обстановка и условия для решения задачи

Меня попросили решить данную задачу с использованием, своего рода, онлайн блокнота, где мой собеседник накидал задание и наблюдал за тем, как я набиваю мое решение. Скажу честно, блокнот, даже онлайновый, вышиб меня из колеи. Оригинал кода задания был сделан на псевдо C#, но я предпочитаю javascript.

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