2010-05-19 1 views
3

Я начал программировать, потому что я был аппаратным парнем, которому было скучно, я думал, что проблемы, решаемые в программной части, были гораздо интереснее, чем аппаратные. В то время большинство электрических шин, которыми я занимался, были серийными, некоторые движущиеся данные достигали 1,5 мегабит! ;)Параллельное программирование, разве мы не учимся снова из истории?

На протяжении многих лет они эволюционировали в параллельные шины, чтобы ускорить обмен данными, в конце концов, передачу 8/16/32/64, любые биты за раз невероятно ускоряют передачу. Ну, наша способность создавать и обнаруживать изменения состояния становилась все быстрее и быстрее, до такой степени, что мы могли так быстро выводить данные, что помехи между параллельными трассами или кабельными проводами сделали очистку сигнала слишком дорогостоящим, и мы по-прежнему получаем разумную производительность от серийного интерфейсы, черт, некоторые графические интерфейсы даже происходят через USB на некоторое время.

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

Что вы думаете?

+0

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

ответ

1

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

1

Я думаю, что ваш вопрос очень интересный.

Однако мне кажется, что это сводится к тому, что «в конечном итоге нам удается быстрее выполнять быстрое серийное оборудование». Это может быть правдой. Тем не менее, по моему опыту, стоимость и время для улучшения технологии путем добавления нескольких единиц чего-то, а не перехода к следующему поколению, все еще намного ниже. Поэтому я считаю, что при каждом «изменении поколений» мы все равно переживали период, когда продвижение будет достигнуто «мульти», а не «нео». Фактически, больше времени тратится на мультизадачный подход, который имеет смысл инвестировать в распараллеливание.

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

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

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

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

+0

Я согласен с «обычными» квантовыми вычислениями ... теперь, когда я видел на днях обработку информации с квантовыми состояниями сцепления ... ЭТО было бы очень круто! ;) – mezmo

0

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

Смежные вопросы