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 
Заслуженный участник
Аватара пользователя


09/10/05
1142
Sanyok
Ну хорошо, попытаюсь привести Вам свои возражения.
Первое, что сразу бросается в глаза, а почему Вы считаете, что CS это только программирование? А куда-же делись хардверы (с ассамблером), автоматы, датенбанки с их логической структурой, теоретическая информатика, проблема решения задачи алгоритмом (то есть возможно-ли вообще задать её - там от программирования только скелет), машина Тюринга. Наконец такое понятие как "искусственный интеллект"?
Ну хорошо, Вы решили ограничиться программированием. Конечно здесь сразу воникает проблема разработки собственных кодов и использования других. Не понимаю, почему используя другии, программирование становиться гуманитарной наукой? Код программы, алгоритм, дотаточно капризная вещь - в основном связана с проблемами математического характера (та-же графика - например трёхмерная, матрицы поворотов, векторы).
А методы симуляции каких-нибудь проблем, обработка статичтических данных компом (например метод Монте-Карло). Ну ещё добавьте сюда опять таки эффективность самого кода (экономия времени исполнения операции, экономия места на диске - между прочим почти все алгоритмы описываются функциями, который отвечают на эти вопросы).
В программе университетов если абитуриент поступает на информатику, второй обзательный предмт у него должна быть математика, причём в не слабом объёме.
Ну и наконец хакеры - если хочешь быть хорошим хакером, подбирать коды к банковским ситемам, то необходимо немного разбираться в криптографии, кодировании и т.п.
Хотя если всё это относиться теперь к гуманитарному разделу.... :roll: В конце концов не в названии дело.

 Профиль  
                  
 
 
Сообщение06.02.2006, 19:25 
Основатель
Аватара пользователя


11/05/05
4312
Чтобы быть хорошим хакером, подбирать коды к банковским ситемам нужно охрененно разбираться в криптографии =)

 Профиль  
                  
 
 
Сообщение06.02.2006, 19:32 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Или психологом. Последнее более вероятно, так как дырок в используемых банками системах мало. А вот угадать пароль -- куда как реальнее...

 Профиль  
                  
 
 
Сообщение06.02.2006, 20:16 
Заслуженный участник


28/10/05
1368
Po-moemu, -- k mutnim (naukam).

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

 Профиль  
                  
 
 
Сообщение06.02.2006, 20:40 
Заслуженный участник
Аватара пользователя


09/10/05
1142
Ну ясно дело надо! А чем тебе это не нравится?

 Профиль  
                  
 
 
Сообщение06.02.2006, 20:57 
Заслуженный участник
Аватара пользователя


17/10/05
3709
: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 
Заслуженный участник
Аватара пользователя


09/10/05
1142
незванный гость
угу, я с Вами согласна! Только железяки конечно тоже туда входят (вместе с ассамблером) - моё личное мнение.

 Профиль  
                  
 
 
Сообщение07.02.2006, 06:08 
Заслуженный участник


15/05/05
3445
USA
Я согласен с незванным гостем : Computer Science - это наука. Причем прежде всего - математика. И теория алгоритмов, и теория автоматов, и теория формальных языков - все это дети и внуки математической логики и теории рекурсивных функций.
В частности, мат.лингвистика выросла из теории алгоритмов в форме Поста.

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

 Профиль  
                  
 
 
Сообщение07.02.2006, 06:41 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Не возражаю. Но добавлю, что ведь и уравнения математической физики -- часть математики. Так что явного противоречия нет. (Кстати, о детях -- я бы назвал дискретную математику как одного из популярных родителей.)

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

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

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

 Профиль  
                  
 
 
Сообщение07.02.2006, 10:38 
Заслуженный участник
Аватара пользователя


09/10/05
1142
Yuri Gendelman
Хорошо, можно сделать и такую формулировку. :wink:

 Профиль  
                  
 
 
Сообщение07.02.2006, 13:53 
Заслуженный участник
Аватара пользователя


12/10/05
478
Казань
Возможно, когда я говорил о 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 
Заслуженный участник
Аватара пользователя


12/10/05
478
Казань
Блин, извиняюсь - цитата была взята не из гл. 6, а из первой главы, совет номер 6.

 Профиль  
                  
 
 
Сообщение08.02.2006, 19:59 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
SE, разумеется, включат в себя программирование, и еще уже -- работу с текстами программ.

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

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

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

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

 Профиль  
                  
 
 
Сообщение09.02.2006, 00:41 
Экс-модератор


12/06/05
1595
MSU
Цитата:
Мораль -- хорошие программы пишут умные люди.

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

 Профиль  
                  
 
 
Сообщение09.02.2006, 08:49 
Заслуженный участник
Аватара пользователя


12/10/05
478
Казань
незванный гость писал(а):
Мораль -- хорошие программы пишут умные люди.

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 55 ]  На страницу Пред.  1, 2, 3, 4  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group