Программирование находится в зачаточном состоянии.
Хотя языки и методологии развиваются очень быстро в течение многих лет, нам еще предстоит пройти долгий путь. Признаки очевидны:
Документация по языкам распространяется небрежно через Интернет (здесь помогает стекопоток).
Языки не могут развиваться синтаксически без нарушения предыдущих версий.
Отладка все еще часто выполняется с помощью printf.
Языковые библиотеки или другие формы крупномасштабного повторного использования кода все еще довольно редки.
Очевидно, что все это улучшается, но было бы неплохо, если бы мы все согласились, что это начало, а не конец =).
Информатика - это академическая область. Это немного похоже на изучение математики. Он изучает и исследует алгоритмы, структуры данных и т.п.
Компьютерные программисты пишут программы; этот термин обычно используется для описания людей в промышленности, хотя, конечно, компьютерные ученые тоже пишут программы.
Типичным ученым-информатиком может быть кто-то вроде Дона Кнута . О его работе над алгоритмами ходят легенды.
Типичным программистом может быть Джефф Этвуд . Мы используем его сайт прямо сейчас.
Nowadays, one can call himself/herself a computer programmer even if the only language they know is VBScript. Cynicism aside, I have frustrations with some of the industry terminology myself, e.g. computer programmer or software developer.
See Definition of a software engineer, Difference between programmers and engineers
The difference between scientists and engineers is pretty clear though. Both need to know computer science, but the main focus of scientists is expanding the scientific body of knowledge, whereas engineers are focused on applying this knowledge in real-world systems.
I'm a Computer Scientist (says so on my degree, so it must be true!) with 26 years' experience. I've spent maybe 5% of that time writing programs; the rest of it has been:
I write code now primarily to make my life easier at work, or for my own interest; I don't work as a "coder", and have very rarely had to rely on my coding skills for income.
If you are looking for a simple explanation of the difference in industry, I'd suggest that a programmer is primarily concerned with WHAT gets done and WHEN, and a computer scientist is primarily concerned with HOW it gets done and WHY. I'd be interested in hearing others' thoughts on whether this distinction fits their experience
Однажды была такая шутка:
Q: В чем разница между обезьяной и профессором CS?
A: An ape doesn't think he can program.
This is rather mean to CS professors, many of whom can actually program. However, not all are in the habit of doing this on a regular basis. At the theoretical end you see people who are essentially mathematicians. Some HCI people are more in the applied psychology space than programming. Other examples of this sort can be found - there is considerably more to Computer Science than just programming.
On the other hand, there are many practicing programmers who lack basic understanding of CS theory such as big-O notation. Regardless of one's views on whether it should, it certainly doesn't stop people from practicing as a programmer.
This, one can take the view Computer Scientists and Computer Programmers are not the same things, although they are by no means mutually exclusive. One can be both a Computer Scientist and a Computer Programmer.
The Computer Scientists will worry about the road you have to take to reach your goal, but worries less about the goal itself. Программист меньше заботится о дороге и беспокоится о достижении цели до того, как истечет крайний срок.
Лучшее программное обеспечение, как правило, пишут люди, которые понимают и то, и другое. Вам нужна хорошая дорога, чтобы другие могли легко следовать и, возможно, даже улучшать ситуацию на этом пути. Но все это не должно отвлекать вас от крайнего срока, не дойдя до финиша первым. Многие новые проекты так и не были запущены, потому что Ученому требовалось слишком много времени для работы в дороге. Кроме того, слишком много существующих проектов тоже потерпели неудачу, потому что программисты пошли быстрым путем, и, похоже, никто не сможет повторить его снова.
* надевает несерьезный ответ *
Один прагматичен, другой нет.
Вы можете провести параллель с математикой и прикладной математикой. Один способен исследовать и исследовать новые математические модели и теоремы, а второй - как использовать и применять их на практике. Так точно информатика и компьютерное программирование. Один исследует новые полевые теоремы CS и новые эффективные структуры данных, а второй больше о том, как эффективно использовать научный результат.
Я бы использовал аналогию с человек, который строит дома, а не тот, кто проектирует дома.
Теперь есть третья категория, которая будет включать тех, кто ищет способы реализовать проекты домов.
Итак, я бы сказал, что программист имеет тенденцию быть разработчик программ, в то время как ученый сосредотачивается на поиске способов реализации частей. По большей части программисты ИСПОЛЬЗУЮТ работу ученого для выполнения своей работы.
В частности, я бы сказал, что программист реализует алгоритм быстрой сортировки, а ученый-компьютерщик открывает алгоритм.
its the same as an engineer and a mechanic. unfortunately i think i am a mechanic :P
actually the wikipedia definitions are quite nice for this.
and
:-) A Computer Scientist is a fraud. There really is no such thing as computer science, computers themselves are built by electronic engineers based on the work of physicists and mathematicians. The fundimental basis of software is mathematical, and, it is implemneted by Software Engineers (who freely admit to being Computer Programmers).
Computer Programmers on hte other hand are what they say they are -- people who program computers!