2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3, 4  След.

Computer Science - это наука:
Точная 44%  44%  [ 11 ]
Естественная 20%  20%  [ 5 ]
Гуманитарная 8%  8%  [ 2 ]
Ничего из вышеперечисленного 28%  28%  [ 7 ]
Всего голосов : 25
 
 
Сообщение06.02.2006, 17:40 
Аватара пользователя
Sanyok
Ну хорошо, попытаюсь привести Вам свои возражения.
Первое, что сразу бросается в глаза, а почему Вы считаете, что CS это только программирование? А куда-же делись хардверы (с ассамблером), автоматы, датенбанки с их логической структурой, теоретическая информатика, проблема решения задачи алгоритмом (то есть возможно-ли вообще задать её - там от программирования только скелет), машина Тюринга. Наконец такое понятие как "искусственный интеллект"?
Ну хорошо, Вы решили ограничиться программированием. Конечно здесь сразу воникает проблема разработки собственных кодов и использования других. Не понимаю, почему используя другии, программирование становиться гуманитарной наукой? Код программы, алгоритм, дотаточно капризная вещь - в основном связана с проблемами математического характера (та-же графика - например трёхмерная, матрицы поворотов, векторы).
А методы симуляции каких-нибудь проблем, обработка статичтических данных компом (например метод Монте-Карло). Ну ещё добавьте сюда опять таки эффективность самого кода (экономия времени исполнения операции, экономия места на диске - между прочим почти все алгоритмы описываются функциями, который отвечают на эти вопросы).
В программе университетов если абитуриент поступает на информатику, второй обзательный предмт у него должна быть математика, причём в не слабом объёме.
Ну и наконец хакеры - если хочешь быть хорошим хакером, подбирать коды к банковским ситемам, то необходимо немного разбираться в криптографии, кодировании и т.п.
Хотя если всё это относиться теперь к гуманитарному разделу.... :roll: В конце концов не в названии дело.

 
 
 
 
Сообщение06.02.2006, 19:25 
Аватара пользователя
Чтобы быть хорошим хакером, подбирать коды к банковским ситемам нужно охрененно разбираться в криптографии =)

 
 
 
 
Сообщение06.02.2006, 19:32 
Аватара пользователя
:evil:
Или психологом. Последнее более вероятно, так как дырок в используемых банками системах мало. А вот угадать пароль -- куда как реальнее...

 
 
 
 
Сообщение06.02.2006, 20:16 
Po-moemu, -- k mutnim (naukam).

Perechislite mne, pojaluista, kakie razdeli vklyuchaet v sebya Computer Science.

 
 
 
 
Сообщение06.02.2006, 20:40 
Аватара пользователя
Ну ясно дело надо! А чем тебе это не нравится?

 
 
 
 
Сообщение06.02.2006, 20:57 
Аватара пользователя
:evil:
Во-первых, мы говорим о Computer Science или о Software Engineering? Первое -- наука, второе -- инженерная деятельность. И, что может показаться совсем невероятным, :lol: в их названия эти слова и входят. CS и SE, несомненно, связаны, но являются разными областями человеческой деятельности.

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

В Computer Science такие элементы, на мой взгляд, отсутствуют. Я не склонен относить hardware к Computer Science (у меня к нему примерно такое же отношение, как у физика к математике -- использую, но это не физика), равно как и ассемблер для меня не наука -- хоть они оба и встречаются в курсе CS. CS покрывает многие разделы -- теорию алгоритмов и теорию вычислимости, формальные языки и искусственный интелект и многое другое -- но в целом остается теоретической наукой. Хотя в ней есть место и эксперименту. (Но вот методам отладки -- наверное нет. Это -- неотъемлемая часть SE).

Взаимоотношение между CS и SE примерно такое же, как между физикой и инженерией. Это, по-видимому, одна из проблем выпускников университетов -- они изучают CS, а индустрия (бизнес) ждет SE. Хотя, по моему ограниченному опыту, движение CS --> SE дается людям проще, чем SE --> CS.

 
 
 
 
Сообщение06.02.2006, 21:07 
Аватара пользователя
незванный гость
угу, я с Вами согласна! Только железяки конечно тоже туда входят (вместе с ассамблером) - моё личное мнение.

 
 
 
 
Сообщение07.02.2006, 06:08 
Я согласен с незванным гостем : Computer Science - это наука. Причем прежде всего - математика. И теория алгоритмов, и теория автоматов, и теория формальных языков - все это дети и внуки математической логики и теории рекурсивных функций.
В частности, мат.лингвистика выросла из теории алгоритмов в форме Поста.

Хочу только выразить "особое мнение" относительно hardware.
Конечно ни железяки сами по себе, ни ассемблер - это не CS (не обижайтесь, Capella :)).
Но ведь есть еще и дизъюнктивные нормальные формы, теория синтеза логических цепей, проблемы проектирования топологии СБИС и т.п.

 
 
 
 
Сообщение07.02.2006, 06:41 
Аватара пользователя
:evil:
Не возражаю. Но добавлю, что ведь и уравнения математической физики -- часть математики. Так что явного противоречия нет. (Кстати, о детях -- я бы назвал дискретную математику как одного из популярных родителей.)

Я склонен определять Computer Science как науку о методах представления и обработки информации. Я надеюсь, определение достаточно общее. Но оно не включает инженерные аспекты. Хотя названный Вами круг проблем, Юрий, частично покрывает. Я не могу определенно сказать про экстремальные задачи -- это CS или это математика. И без знания обеих недалеко уйдешь.

Под мое определения -- и я не претендую на его общепринятость -- ассемблер не подпадает. Как и вообще языки программирования. И не случайно. Программирование, в его обычном понимании, суть инженерная деятельность. Это, если хотите, строительство. Которое опирается на законы физики, но далЕко от исследования оных. Языцы же создаются для решения конкретных задач. Алгол -- для обмена алгорифмами (и потому язык алгоритмический), PL/1 и C -- языки программирования, Fortran -- язык представления формул, ну а Pascal -- (по крайней мере, по мнению автора) язык обучения программиорованию.

Изучение hardware и ассемблера необходимо специалисту по CS. Абсолютно необходимо. Без понимания устройства реального "железа" хорошего алгоритма сортировки просто не сделать (образцом в этом смысле является для меня отнюдь не Кнут, а "Сортировка и системы сортировки" Лорана -- увы, в библиотеке пока нет). Хотя для больших отделов CS это все не важно. А для других -- важно неимоверно.

 
 
 
 
Сообщение07.02.2006, 10:38 
Аватара пользователя
Yuri Gendelman
Хорошо, можно сделать и такую формулировку. :wink:

 
 
 
 
Сообщение07.02.2006, 13:53 
Аватара пользователя
Возможно, когда я говорил о Computer Science, я имел в виду Software Engineering. Хотелось бы узнать четкое определение того и другого.

Незванный гость писал(а):
В целом, Software Engineering включает в себя элементы гуманитарные. Программные системы разрабатываются людьми, и, часто (хотя и не всегда) для людей. Соответствено имеет место быть взаимодействие людей в процессе построения системы и взаимодействие людей с системой.


Да, немаловажный момент, если не основной. А поскольку проектирование, как правильно было замечено, выполняется людми (и часто - не одним человеком), тут и выясняется, что не хлебом единым (то бишь математикой & etc) жив программер... То, о чем тут упоминалось - математическая логика, теория автоматов, статистическая обработка данных, асм, и т.д. - это инструменты, но ими надо уметь пользоватся. Если кто-то знает синтаксис языка, это еще не значит, что он умеет его (язык) использовать.

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

1) Вряд ли за ограниченное время можно выучить его настолько хорошо, что бы написать код, более оптимальный, чем тот, что создает фирменный компилятор C (а они как правило, есть).
2) Даже если и получится это сделать, то такой код будет непереносимым монолитом, который невозможно нигде использовать, кроме даной платформы.

То есть использовать его, конечно, надо, но очень осторожно и дозированно.

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

Кстати, пока я тут писал, мне пришла одна мысль (да мож и не мне, это просто я так понял Незванного гостя), как разделить понятие Computer Science и Software Engineering. Первое - это скорей, наука об алгоритмах(по-моему, в США в вузах даже предмет такой есть - алгоритмы), их построении и анализе, а второе - о проектировании программ (оно и понятно, из названия следует).

Эту тему я создал, вспомнив, что пишет о проектировании программ А.Голуб в своей книге "Веревка достаточной длины, что бы выстрелить себе в ногу. Правила программирования на C/C++". Признатся, вспомнил я не все... :oops:
Вот, из главы 6, под названием "Если вы не можете сказать это по-английски, то вы не сможете выполнить это на С/С++.":
Цитата:
Акт записи на английском языке описания того, что делает программа, и что делает каждая функция в программе, является критическим шагом в мыслительном процессе. Хорошо построенное, грамматически правильное предложение - признак ясного мышления. Если вы не можете это записать, то велика вероятность того, что вы не полностью продумали проблему или решение. Плохая грамматика и строение предложения являются также показателем небрежного мышления. Поэтому первый шаг в написании любой программы - записать то, что делает программа, и как она это делает.
Есть разные мнения о возможности мышления вне языка, но я убежден, что аналитическое мышление того типа, который нужен в компьютерном программировании, тесно связано с языковыми навыками. Я не думаю, что является случайностью то, что многие из знакомых мне лучших программистов имеют дипломы по истории, филологии и схожим наукам. Также не является совпадением то, что некоторые из виденных мной худших программ были написаны инженерами, физиками и математиками, затратившими в университете массу энергии на то, чтобы держаться как можно дальше от занятий по языку и литературе.
Сущность заключается в том, что математическая подготовка почти не нужна в компьютерном программировании. Тот тип организационного мастерства и аналитических способностей, который нужен для программирования, связан полностью с гуманитарными науками. Логика, например, преподавалась на философском факультете, когда я был в университете. Процесс, используемый при проектировании и написании компьютерных программ, почти полностью идентичен тому, который используется, чтобы сочинять и писать книги. Процесс программирования совсем не связан с теми процессами, которые используются для решения математических уравнений.


А вот, в следующем абзаце, собственно о том, что мухи от котлет все-таки отличаются, чего я поначалу не заметил.. :oops: :
Цитата:
Здесь я делаю различие между информатикой (computer science) - математическим анализом компьютерных программ - и программированием или разработкой программного обеспечения - дисциплиной, интересующейся написанием компьютерных программ.


P.S. Извиняюсь за длинный сумбурный пост и кучу банальностей, я просто пытался объяснить свою позицию.

 
 
 
 
Сообщение07.02.2006, 16:38 
Аватара пользователя
Блин, извиняюсь - цитата была взята не из гл. 6, а из первой главы, совет номер 6.

 
 
 
 
Сообщение08.02.2006, 19:59 
Аватара пользователя
:evil:
SE, разумеется, включат в себя программирование, и еще уже -- работу с текстами программ.

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

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

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

И еще один интересный момент. Учить разработке больших систем студентов -- почти как первоклашкам читать Канта. Буквы знают, а не впрок. Но читают, учат. Зато курса "методы отладки программ" я не видел ни в одном университете. Считается, что студенты рождаются с этим знанием? А ведь это базовый навык. Где нибудь вы видели семинар "методика чтения программы"? Многие с ужасом смотрят на 300 000 строк кода, в которых надо найти и исправить ошибку. Я в этом году увидел книжку "Изгнание бесов в программировании: исправление ошибок и оптимизация в существующем коде". Одно название чего стоит. Мне кажется, что методы разработки больших систем нужны не всем, и должны читаться как курсы значительно позже -- лет через пять- десять- пятнадцать после универа, для тех, кто будет реально разрабатывать большие системы, а не писать код.

 
 
 
 
Сообщение09.02.2006, 00:41 
Цитата:
Мораль -- хорошие программы пишут умные люди.

Это мне напомнило:
- Что такое математика?
- Это то, что делают математики.
- А что такое хорошая математика?
- Это то, что делают хорошие математики.
(с) кажется, Пуанкаре.

 
 
 
 
Сообщение09.02.2006, 08:49 
Аватара пользователя
незванный гость писал(а):
Мораль -- хорошие программы пишут умные люди.

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

Не модскажете, где видели? Меня название заинтересовало. Очень. Я как раз изгнанием бесов счас занимаюсь :) (и не только счас, но и раньше приходилось).

 
 
 [ Сообщений: 55 ]  На страницу Пред.  1, 2, 3, 4  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group