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

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

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

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

Сообщение Deimos » 08.02.2016 21:39:17

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


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


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

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

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

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

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

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

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

а.... Еще-вот отпишусь (и спрошу за одно)... Какая разница, на каком язык программировать (паскаль люблю с детства :) ), если почти-любую задачу в программировании можно решит посредством почти-любого языка? (узкие не берем - ассемблер не переплюнуть)
Deimos
постоялец
 
Сообщения: 169
Зарегистрирован: 17.01.2010 00:31:30

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

Сообщение Verx0Laz » 08.02.2016 22:26:08

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

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

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

Сообщение Mirage » 09.02.2016 00:42:29

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


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

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


Ну, запросы к базе на императивном языке неудобно писать.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

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

Сообщение скалогрыз » 09.02.2016 01:02:39

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

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

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

ЗЫ: обращаю внимание что "улучшать" и "добавлять новые фичи" это разные вещи :mrgreen:
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение debi12345 » 09.02.2016 01:12:35

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

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

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

Это не команда. Если удастся договориться без скандала и, не дай бог - будущего кидалова-откоса - ОЧЕНЬ повезет.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

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

Сообщение скалогрыз » 09.02.2016 01:42:36

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

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

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

аха. тут сразу возникнет конфликт о том, что есть "программирование" и кто есть "программист" (особенно в сегодня).
Ибо внимание на несколькиъ объектах сразу обычно сосредотачивает архитектор проекта.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение pupsik » 09.02.2016 02:49:37

лучший тест профпригодности программиста
:lol:
А факторы профпригодности? Т.е. проигравший, выигравший, метнувший.....
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

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

Сообщение debi12345 » 09.02.2016 08:35:40

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

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

Сообщение sign » 09.02.2016 08:51:58

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

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

Так что, рекурсия - регулярно.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

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

Сообщение azsx » 09.02.2016 17:18:50

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

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

оффтопик логично, что умнение писать сервелеты java - это значительный плюс к трудоустройству.
просто напомню, что языков и диалектов программирования около 3000. Из них реально популярны 10-20 языков. И паскаля по статистике в них нет. Зато есть напрочь опустившияся планка к задачам, которые решают программисты. То есть если язык программирования может читать данные с диска и бд, хоть как то может юзать устройства пк и выводит инфу на экран - то язык более чем годен для написания любой офисной задачи. Если бы менеджер прибегал узнать управлюсь ли я за неделю, надо решить 2 задачи, сделать выборку из неструктурированных логов на 50 тб и потом обсчитать результаты на видеокартах на 15 пк с выводом хотя бы приблизительно достоверного результата - я бы сильно засомневался, что на любом языке программирования можно написать ваще всё одинаково легко.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

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

Сообщение Лекс Айрин » 09.02.2016 17:35:11

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


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

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


А кто говорит о легкости? Просто о возможности.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение azsx » 09.02.2016 17:45:48

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

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

внутри майнкрафт уже ОС пишут. Хотя это возможно, тем не менее минимальная целесообразность - да нафиг надо!
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

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

Сообщение debi12345 » 09.02.2016 17:52:55

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

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

Сообщение Дож » 09.02.2016 18:26:52

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

А из-за памяти не проиграем? O(N) против изначальных O(h) с деревом высоты h.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

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

Сообщение azsx » 09.02.2016 19:12:35

очередной пример зачем нужна рекурсия на собеседовании 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.

еще раз, я стараюсь не использовать рекурсию не потому, что она не нужна. просто у меня число ошибок с рекурсией в коде больше, чем без нее.
azsx
энтузиаст
 
Сообщения: 959
Зарегистрирован: 16.11.2015 06:38:32

След.

Вернуться в Потрепаться

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

Рейтинг@Mail.ru