Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Язык, Для чего, С чем.

45K
31 декабря 2010 года
botasa
45 / / 31.12.2010
Здравствуйте !
Сперва мини история =)
С недавнего времени занялся изучение программированием, так как это будет в будущем моей профессией. Ну как вы знаете в учебных заведениях нифига не учат и берут только деньги, и студенты ( скажем большая часть ) говорю это, так как я сам на данный момент студент - сидят и играют всякие игры, просто тупое убивание времени. Я этого не понимал, но в скорее я осознал что я "дурак" что тоже сидел, играл игры и т.д. не занимаясь ничём полезным, не думал про будущее.
Скажем так : всё что происходит с человеком - виноват он сам.

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

Я много раз замечал, что на форумах создают темы где спрашивают с чего начать, и почти на всех форумах одинаковые ответы, например ( учи С++ / С# или там Delphi а еще : учи то что тебе нравится ) ну а я подумал, как можно что то изучать, если не знаешь для чего и под что его можно использовать.

Вопрос :
Вот тут я хотел задать вопрос или даже несколько : какой язык и для чего используют, какие направления есть ( там для написание программ, для создание сайта и т.д. ) хотел бы узнать КЛАССИФИКАЦИЮ, НАПРАВЛЕНИЙ чтоб определиться какой язык выбрать ...

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

буду очень благодарен, если кто то уделит мне 5-10 мин. своего времени
для написание ответа.

П.С.
  • в ходе написания ответа прошу не переходит на личное, типа "купи букварь" и т.д.
  • если не знаешь ответ - проходи мимо, глупости не пиши.
Страницы:
87
31 декабря 2010 года
Kogrom
2.7K / / 02.02.2008
Есть такое:
http://ru.wikipedia.org/wiki/Сравнение_языков_программирования

Но это для тех, кто и так понимает. Для начинающего лучше какая-то схема, картинка, а не набор устрашающих таблиц. Но я пока такого не нашёл.
6
31 декабря 2010 года
George
4.1K / / 05.01.2007
Актуальне новогодне топек. :)
87
31 декабря 2010 года
Kogrom
2.7K / / 02.02.2008
Если бы каждый накидал схему по теме, то было бы весело. Очень. Но не уверен, что кто-то отважится :)
45K
31 декабря 2010 года
botasa
45 / / 31.12.2010
Цитата: Kogrom
Если бы каждый накидал схему по теме, то было бы весело. Очень. Но не уверен, что кто-то отважится :)


Мне б по сути вопроса. Очень много не надо, главное чтоб было верно и я понял.

45K
31 декабря 2010 года
botasa
45 / / 31.12.2010
Цитата: Kogrom
Есть такое:
http://ru.wikipedia.org/wiki/Сравнение_языков_программирования

Но это для тех, кто и так понимает. Для начинающего лучше какая-то схема, картинка, а не набор устрашающих таблиц. Но я пока такого не нашёл.



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

87
31 декабря 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: botasa
спасибо за ссылку. я это уже видел, но мне пока этого не понять. мне кажется ты не понял сути моего вопроса, или я тебя не понимаю ...



Проблема вот в чём. Начинающие пытаются классифицировать языки программирования так: этот - для "программ", этот - для сайтов, этот для ещё чего-то. На самом деле так классифицировать можно среды разработки, фреймворки и т.п. Серьёзные языки программирования так разделять бессмысленно, ибо они обычно не привязаны к конкретным задачам. Их классифицируют так, как в приведённой мною статье.

Например, Python можно использовать и для написания "программ", и для сайтов, и для одноразовых скриптов... Как его тут разделить? Есть более специализированные языки, типа bash, но их трудно назвать полноценными языками программирования.

5
01 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: botasa
я подумал, как можно что то изучать, если не знаешь для чего и под что его можно использовать


Классификаций языков много, но наиболее употребительных две:

1) Все компьютерные языки делятся на две большие категории: языки общего назначения и предметно-ориентированные языки. На языках из первой категории возможно решить практически любые задачи (для них справедливо утверждение полноты по Тьюрингу), например это Pascal, C/C++/C#, Java; языки из второй созданы для какой либо специфической задачи или предметной области, яркий пример - SQL.

2) Также языки можно разделить на алгоритмические - на которых можно записывать алгоритмы, и на описательные (декларативные), предназначенные для сообщения компьютеру неких данных и их отношений. Как правило, языки общего назначения подходят также и для задач "описания".


Границы этих классификаций не являются строгими, многие языки могут переходить под разные категории в рамках одной классификации. Например алгоритмический язык JavaScript в вебпрограммировании используется как язык описания данных в формате JSON. На алгоритмическом языке Nemerle возможно создавать узкоспециализированные мини-языки (LINQ, XML-литералы, описания парсеров) и т.д.

244
01 января 2011 года
UAS
2.0K / / 19.07.2006
От себя могу сказать, что начинать с PHP не стоит, если хотите серьезно заниматься.
Так как изучить другой язык после него очень сложно в виду ограниченности PHP. Проверено на своем опыте. После PHP сел на Яву и долго не мог разобраться вообще в различных принципах программирования и "понятиях".
Имхо лучше начать с тяжелого языка программирования - потом намного легче будет разобраться в прочих языках. Тем более обычно программисту приходится иногда писать на разных языках.
297
01 января 2011 года
koodeer
1.2K / / 02.05.2009
Сделаю своё дилетантское разделение языков, а вернее, видов программирования:
1. системное,
2. прикладное,
3. веб,
4. администрирование.
Системное программирование - это написание драйверов, ядра операционных систем и тому подобного.
Прикладное - написание программ, работающих на клиентских компьютерах: офисные пакеты, всевозможные редакторы, игры и прочее.
Веб-программирование - создание сайтов и всего с ними связанного.
Администрирование - кому-то покажется странным, что я отношу его сюда, но это тоже справедливо, т. к. администратору тоже нужно уметь программировать - писать скрипты.

Конечно, все эти виды тесно связаны друг с другом, и строгого разделения нет. Но всё же существенные различия имеются.

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

botasa, определитесь, что вам ближе всего по духу, в какой области хотите работать. После этого можно будет советовать что-то более конкретное.

Напоследок, посоветую учить язык, который знать нужно каждому программисту - английский. Ныне это язык информационных технологий де-факто.
45K
09 января 2011 года
botasa
45 / / 31.12.2010
Цитата: hardcase
Классификаций языков много, но наиболее употребительных две:

1) Все компьютерные языки делятся на две большие категории: языки общего назначения и предметно-ориентированные языки. На языках из первой категории возможно решить практически любые задачи (для них справедливо утверждение полноты по Тьюрингу), например это Pascal, C/C++/C#, Java; языки из второй созданы для какой либо специфической задачи или предметной области, яркий пример - SQL.

2) Также языки можно разделить на алгоритмические - на которых можно записывать алгоритмы, и на описательные (декларативные), предназначенные для сообщения компьютеру неких данных и их отношений. Как правило, языки общего назначения подходят также и для задач "описания".


Границы этих классификаций не являются строгими, многие языки могут переходить под разные категории в рамках одной классификации. Например алгоритмический язык JavaScript в вебпрограммировании используется как язык описания данных в формате JSON. На алгоритмическом языке Nemerle возможно создавать узкоспециализированные мини-языки (LINQ, XML-литералы, описания парсеров) и т.д.



спасибо за ответ !

45K
09 января 2011 года
botasa
45 / / 31.12.2010
Цитата: UAS
От себя могу сказать, что начинать с PHP не стоит, если хотите серьезно заниматься.
Так как изучить другой язык после него очень сложно в виду ограниченности PHP. Проверено на своем опыте. После PHP сел на Яву и долго не мог разобраться вообще в различных принципах программирования и "понятиях".
Имхо лучше начать с тяжелого языка программирования - потом намного легче будет разобраться в прочих языках. Тем более обычно программисту приходится иногда писать на разных языках.



если честно, я этого не понимаю ... как можно читать книгу не изучив алфавиту и грамматики ...

5
09 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: botasa
если честно, я этого не понимаю ... как можно читать книгу не изучив алфавиту и грамматики ...


Рекомендую прочитать книгу "Языки программирования: разработка и реализация" (Т.Пратт, М.Зелковиц). В ней рассматривается целый ряд классичских языков с обзорами и сравнениями.

45K
09 января 2011 года
botasa
45 / / 31.12.2010
Цитата: koodeer
Сделаю своё дилетантское разделение языков, а вернее, видов программирования:
1. системное,
2. прикладное,
3. веб,
4. администрирование.
Системное программирование - это написание драйверов, ядра операционных систем и тому подобного.
Прикладное - написание программ, работающих на клиентских компьютерах: офисные пакеты, всевозможные редакторы, игры и прочее.
Веб-программирование - создание сайтов и всего с ними связанного.
Администрирование - кому-то покажется странным, что я отношу его сюда, но это тоже справедливо, т. к. администратору тоже нужно уметь программировать - писать скрипты.

Конечно, все эти виды тесно связаны друг с другом, и строгого разделения нет. Но всё же существенные различия имеются.

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

botasa, определитесь, что вам ближе всего по духу, в какой области хотите работать. После этого можно будет советовать что-то более конкретное.

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



среди всех ответов я ждал именно такого ! с английским я не могу поспорить ... где только не слышал и не видел, везде вымогают знание АНГ.

Вот я не могу определиться в какой области хотел работать, так как я не знал какие ОБЛАСТИ есть !!! но по вашему описанию, так как я понял - мне больше по душе ( прикладное и веб ) что вы можете сказать про то что я выбрал ? ( по подробнее ) языки и т.д. или если можете киньте ссылки в ЛС где можно почитать ... буду рад если вы ответите !!!

6
09 января 2011 года
George
4.1K / / 05.01.2007
Если и прикладное и веб, то C# (.NET, ASP.NET в частности для веба), Python или Java. Мое неавторитетное имхо. =)
297
09 января 2011 года
koodeer
1.2K / / 02.05.2009
Я тоже считаю оптимальным выбором платформы Java или .NET (хоть C#, хоть VB).
В целом, топикстартер должен теперь попробовать несколько разных языков, с разными парадигмами. А потом выбрать то, что больше по душе. Мне, например, не нравятся языки с динамической типизацией.
87
09 января 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: koodeer
Я тоже считаю оптимальным выбором платформы Java или .NET (хоть C#, хоть VB).


Ты много на Java написал лично? Мне, например, нравилось читать примеры на Java в книгах про ООП. Но на практике меня опечалила работа с консолью, например. Уж слишком многословно.

Цитата: koodeer
Мне, например, не нравятся языки с динамической типизацией.


А со статической? В Си, например, такой код скомпилируется и может запуститься:

 
Код:
int a = "hi!";
a += 10;
printf("%s", a);

Казалось бы, недостаток языка. Однако, есть куча примеров (у того же Кернигана), где подобные штуки в Си используют для полиморфизма.

Теперь на Python:
 
Код:
a = "hi!"
a = a + 1

Выдает ошибку: TypeError: cannot concatenate 'str' and 'int' objects. Вот тебе и типизация.

Это не к холивару "статическия типизация vs динамическая", а для уточнения про строгую типизацию. Истинные сторонники статической типизации должны говорить "мне нравится строгая статическая типизация" :)
63
09 января 2011 года
Zorkus
2.6K / / 04.11.2006
Цитата: Kogrom
Ты много на Java написал лично? Мне, например, нравилось читать примеры на Java в книгах про ООП. Но на практике меня опечалила работа с консолью, например. Уж слишком многословно.


Я писал. А хардкейз написал чуть более чем до на / под дотнете (Включаю шарп), так что риквестирую его в тредъ).

На самом деле да, примеры в очень многих книгах (том же фаулере) даются на Java. Ибо простой, распространенный и "дефолтный" для многих областей язык. В этом плане полезно знать что-то из С# / Java / С++.

Цитата: Kogrom

Истинные сторонники статической типизации должны говорить "мне нравится строгая статическая типизация" :)


"Истинные сторонники" следует тут заменять на "упертые фанатики".
Строгая статическая типизация "как есть" на практике практически нигде не используется. Используется либо нестрогая статическая, либо динамическая (строгая / нестрогая).

87
09 января 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: Zorkus
Я писал.


И? Что ты посоветуешь новичку в качестве универсального языка для любых целей? :)

Цитата: Zorkus
А хардкейз написал чуть более чем до на / под дотнете (Включаю шарп), так что риквестирую его в тредъ).


Ну и молодец. Я в него всегда верил.

Цитата: Zorkus
На самом деле да, примеры в очень многих книгах (том же фаулере) даются на Java. Ибо простой, распространенный и "дефолтный" для многих областей язык. В этом плане полезно знать что-то из С# / Java / С++.


Да. Я о том же.

Цитата: Zorkus
"Истинные сторонники" следует тут заменять на "упертые фанатики".
Строгая статическая типизация "как есть" на практике практически нигде не используется. Используется либо нестрогая статическая, либо динамическая (строгая / нестрогая).


Тут надо любителей языка Ада в тему, вероятно :)
Хотя, наверное, есть ещё и оттенки нестрогости.

63
10 января 2011 года
Zorkus
2.6K / / 04.11.2006
Цитата: Kogrom
И? Что ты посоветуешь новичку в качестве универсального языка для любых целей? :)


Стать более прагматичным и понять, во что больше имеет смысл инвестировать, ибо скорость усвоения знаний конечна и ограничена. Я бы посоветовал таки да, либо Java либо С#. Вообще это зависит еще и от места жительства.

Например, живи я в Москве / Питере, вполне возможно я бы стал С++ - ником. Писал бы игры... Когда то я хотел пойти в геймдев. Вообще и сейчас хочу. Но отдалился я от этого слишком.
[/QUOTE]

297
10 января 2011 года
koodeer
1.2K / / 02.05.2009
Цитата: Kogrom
Ты много на Java написал лично?


Мало. Фактически юзал только J2ME - игры для мобильников пробовал делать. Да, профи себя не считаю. В мире Java я нуб.

Цитата: Kogrom
Но на практике меня опечалила работа с консолью, например. Уж слишком многословно.


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

Цитата: Kogrom
А со статической? В Си, например, такой код скомпилируется и может запуститься:


Дык я и не упоминал Си.

Цитата: Kogrom
Теперь на Python:


А в Python есть нечто наподобие IntelliSense? ;) Чтобы среда разработки прямо по ходу набора кода услужливо подсказывала и автодополняла. Со статической типизацией это реализуется в разы проще.

Цитата: Kogrom
Это не к холивару "статическия типизация vs динамическая", а для уточнения про строгую типизацию. Истинные сторонники статической типизации должны говорить "мне нравится строгая статическая типизация" :)


Согласен. Холивара на эту тему не хочу.
Уточняю: мне нравится строгая статическая типизация (Zorkus, не придирайся).


Я вообще почему назвал Java и .NET: обе платформы хороши как для веб-программирования, так и для прикладного. В то время как C/C++ сложно представить в качестве языков для веба (хотя это и возможно).
Дальше: опираясь на знания Java/.NET можно плавно перейти на функциональное или динамическое программирование, продолжая использовать всё богатство освоенных фреймворков этих платформ.

5
10 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
Ты много на Java написал лично? Мне, например, нравилось читать примеры на Java в книгах про ООП. Но на практике меня опечалила работа с консолью, например. Уж слишком многословно.

Java это не язык программирования "консоли", и, во всяком случае, Java программы редко с консолью работают. Но, я думаю, найти сторонние библиотеки, упрощающие стандартный ввод-вывод вообще не проблема.

Цитата: Kogrom
А со статической? В Си, например, такой код скомпилируется и может запуститься:
 
Код:
int a = "hi!";
a += 10;
printf("%s", a);

Казалось бы, недостаток языка. Однако, есть куча примеров (у того же Кернигана), где подобные штуки в Си используют для полиморфизма.

Си - это пример слабой статической типизации. Кстати, в Nemerle похожий пример с printf-ом расскажет об ошибке (на этапе компиляции!):

 
Код:
def a = 10;
printf("%s", a);

Это потому что Nemerle - язык со строгой статической типизацией (проверкой типов занимается макрос).

Цитата: Kogrom
Истинные сторонники статической типизации должны говорить "мне нравится строгая статическая типизация" :)


+1. Я именно так и говорю. Но язык должен быть с выводом типов, иначе наприсание программ превращается в бесконечное специфицирование типов.

87
10 января 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: koodeer
А в Python есть нечто наподобие IntelliSense? ;) Чтобы среда разработки прямо по ходу набора кода услужливо подсказывала и автодополняла. Со статической типизацией это реализуется в разы проще.



В хороших IDE есть. Но, естественно, не срабатывает там, где невозможно предсказать тип. Если не учитывать эту особенность, то ещё неизвестно, где реализовать проще. А особенность эта будет, например, и в шаблонах C++ проявляться. Плата за гибкость, да.

5
10 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: koodeer
Дальше: опираясь на знания Java/.NET можно плавно перейти на функциональное или динамическое программирование, продолжая использовать всё богатство освоенных фреймворков этих платформ.

Фраза несколько бредовая. Стандартная библиотека в этих платформах на ФП не расчитана - сплошное мутабельное состояние. Вон, на F# посмотри, - какую они прокладку к дотнету положили и шизофрению с вызовом функций-методов организовали. ;) C динамикой тоже непонятно, она в сущности не нужна ни в Java ни в .NET. ;)

5
10 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
В хороших IDE есть.

Плавали-знаем. Снести бошку автоподстановке в динамических языках - как два байта переслать.

262
10 января 2011 года
Iktomy
1.2K / / 11.10.2004
Не читал я ответы УКов (они очень умные, и мне не понят многого), но вот чисто от себя хочу посоветовать автору.

Тут надос смотреть на свою личную "заточеность". С чего легче начать - с сложного (т.с. углубитьтся к истокам) или с простого (понять общий, т.с., смысл).

Если берем от сложного к простому - советую посмотреть в сторону Asm и C. Постепенно, шаг за шагом, приходит понимание, что, зачем, почему и, самое главное, КАК это все работает. И тогда аступит момент озарения, когда будете смотреть как на говно на афторов постов "блин, написал х++ - не работает, потанцевал с бубном и написал ++х - уррряяяяя!".

Только не берите С++ по началу, сломаете себе моск.

Области применения: драйверописание, игроделание (движки) ну и еще УКи, знакомые с сабжами, допишут.

Если от простого к сложному - УКи выше советовали С# и Java. Просты и понятны в изучении. Понимание процесса приходит после каждой строчки кода. Лучшие, ИМХО, языки для изучения ООП (предвидя буйство букв отмечу - из тех, с которыми лично я знаком). Именно поэтому я и советовал не браться за С++.

Применение: Enterprise, во всех его проявлениях. В принципе, при грамотном подходе, можно разом превратить в фарш стаю "зайцев".

Ну и третий путь - С++. Труден, тернист (сужу по себе:)). Но если одолеете - честь, хвала, и, возможно, бабло и ништяки. А можно остаться и "умным но бедным" бородатым афтором кучы рулезных фич, за которые не платят.

И самое главное, нужно всегда помнить - дорогу осилит идущий. И второе: ЯП - всего лишь инструмент.
87
10 января 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: Iktomy
Если берем от сложного к простому - советую посмотреть в сторону Asm и C.


Несерьёзный подход к изучению языков программирования. Попытаюсь углубить.

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

После понимания работы транзисторов можно перейти к освоению работы простых логических микросхем: И, ИЛИ, инвертора и т.д. Особое внимание уделите микросхемам с открытым коллектором.

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

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

Можно пойти с другой стороны и начать изучать ТАУ (теория автоматического управления). Тут вы разберётесь, что такое обратная связь, устойчивость, запас устойчивости, управление. Тут вы научитесь создавать хитрые функциональные схемы.

От ТАУ один шаг к использованию UML, к ООА и ООД.

Цитата: Iktomy
И самое главное, нужно всегда помнить - дорогу осилит идущий. И второе: ЯП - всего лишь инструмент.

5
10 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
наконец, вы сможете понять в общих чертах устройство микроконтроллера. А тут и до ассемблера с сями недалеко.

Только как это все относится к программированию? И зачем знать устройство микроконтроллера, при программировании веб-сервиса?

Цитата: Kogrom
Можно пойти с другой стороны и начать изучать ТАУ (теория автоматического управления). Тут вы разберётесь, что такое обратная связь, устойчивость, запас устойчивости, управление. Тут вы научитесь создавать хитрые функциональные схемы.


Как функциональные схемы помогают в ООП?


Резюмируя в целом. Означенные области лишь помогают развить интеллект, но никак не помогают при собственно программировании.

87
10 января 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: hardcase
Только как это все относится к программированию?


Это был юмор. Я старался довести до идиотизма то, что насоветовал уважаемый Iktomy.

Цитата: hardcase
Как функциональные схемы помогают в ООП?


Тут могу посоветовать пристально присмотреться к схемам UML. Многие из них напоминают функциональные схемы ТАУ, так же показывают взаимодействие объектов в системе.

5
10 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom

Тут могу посоветовать пристально присмотреться к схемам UML. Многие из них напоминают функциональные схемы ТАУ, так же показывают взаимодействие объектов в системе.


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

5
10 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
Это был юмор. Я старался довести до идиотизма то, что насоветовал уважаемый Iktomy.

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

87
10 января 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: hardcase
Я не спорю, в UML входят несколько категорий диаграмм (например, структурные и функциональные), но знание UML нисколько не требуется для написания качественных программ. UML в индустрии используется для документирования или специфицирования (что реже) программных продуктов.



Моё мнение: без диаграмм типа UML объектно-ориентированный анализ производить неудобно. Именно потому их используют на этапе проектирования.

Ошибка некоторых начинающих в том, что они пытаются нарисовать сразу красивые диаграммы на этапе проектирования. Это требует ненужных затрат времени, из-за которых начинающие и отказываются от использования UML при анализе. А требуется лишь понять, где лишние связи, кому лучше агрегировать, а кому быть агрегированным и т.д. Для этого достаточно наброска на салфетке, которая завтра отправится в урну.

5
10 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
Ошибка некоторых начинающих в том, что они пытаются нарисовать сразу красивые диаграммы на этапе проектирования.

Ошибка начинающих в том, что они забывают об SRP (Single Responsibility Principle), это им и мешает нарисовать сразу красивые диаграммы.

5
10 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
Моё мнение: без диаграмм типа UML объектно-ориентированный анализ производить неудобно.


Как правило, нормальные программисты не рисуют прямоугольники, а сразу пишут классы с методами-заглушками и комментариями с псевдокодом.

87
10 января 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: hardcase
На самом деле в его словах есть доля истины: языки ассемблера достаточно близки к машине Тьюринга - формальной модели исполнения программ.


Конечно есть. Стал бы я так подробно комментировать то, что не имеет смысла?

Цитата: hardcase
Но чтобы изучать ассемблер, нужно понимать "откуда растут ноги" - из математики, а не так что сразу с "места в карьер".


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

Цитата: hardcase
Именно поэтому я рекомендовал книгу "Языки программирования: разработка и реализация", в ней авторы прослеживают эволюцию абстракций (поколений) машинных языков.


Ты сам её читал? Или как в случае с "Психбольницей в руках пациентов"? Шучу.

Если читал, то и расскажи, где от "простого к сложному", где от "сложного к простому". Не ты ли говорил, что си прост как валенок?

262
10 января 2011 года
Iktomy
1.2K / / 11.10.2004
В одной шикарной книжке по Линуху, которой я зачитывался перед армейкой, знакомство с ОС начиналось с компиляции ядра. Причем все довольно популярно расписывалось: как, зачем и PROFIT.

Сейчас, наверное, это звучит уже смешно, но понимание системы это действительно давало. Ну и небольшой прирост производительности для моего тогдашнего AMD K6-2 500 Mhz.

Дада, сейчас есть Gentoo, я в курсах:)

Дык вот, к чему я клоню, УК Когром. Что бы ответить на вопрос "почему?", довольно таки часто нужно сперва ответить на вопрос "как?".

Я, когда в ПТУ на программиста учился, в том числе изучал и физический смысл p-n перехода, и тригеры и много чего другого. Этим, собственно, академический подход и отличается.

А быдлокодить на PHP ради батона с маслом и варенй колбасой - тут институт совершенно не нужен. Он даже мешает. Отслужил себе в армии (что бы потом голову военкомат не дурил), и ваяй себе демблельские альбомы в сети.:)
87
10 января 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: Iktomy
Дык вот, к чему я клоню, УК Когром. Что бы ответить на вопрос "почему?", довольно таки часто нужно сперва ответить на вопрос "как?".



Да я с тобой согласен во многом. Осталось только понять, где "от простого к сложному", а где "от сложного к простому". Вот ты про C++ пишешь, что он сложен. А как может быть не сложен язык, который является мутантом-гибридом? И можно ли его понять, не зная его предков? И кто из предков был "простым", а кто "сложным"?

45K
10 января 2011 года
botasa
45 / / 31.12.2010
уххх ... написали столько мне непонятного ... аж страшно жить ...
скажем так всё что связано с ASM я даже знать не хочу ... он мне настолько не понравился что словами не передать, изучал его в техникуме на младших курсах ужас ... сравнять С++ и Delphi которое я изучал это цветочки против этого ASM ( ну он мне не нравиться и всё )

на данный момент я вроде нормально изучил HTML CSS - правда это не языки программирования на сколько я понимаю, сейчас учу JavaScript потом когда изучу нормально его перейду на PHP ( за PHP я почему то не увидел ни одного поста ) а там уже С++ пойдет и Java ...

На сколько я понимаю главное не количество, а качество но на всё это надо времени много. Кроме этого у меня учёба, дипломная и еще куча проблем но останавливаться изучать я не собираюсь !!!

увидел пост где кто-то отписал ( в зависимости от места жительства ) ну я очень очень хочу пойти сюда http://ipk.polynet.lviv.ua/ipdo/bak_progr.htm ) но как с деньгами сложится ( .... ) время покажет ...

если я что то не так написал или не так подумал - прошу исправить ... буду рад выслушать другие мнения ...
5
10 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
Ты усложняешь. Ну, булеву алгебру может надо знать, но это пустяки. Сложнее понять косвенную адресацию, но где в ней хитрая математика?

На простых примитивах можно строить сложные штуки. Казалось бы, булева алгебра проста, а ты пробовал разобраться с логикой первого порядка? ;) Правильно выбранный базис дает могучие средства абстрагирования.

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

Цитата: Kogrom
Ты сам её читал? Или как в случае с "Психбольницей в руках пациентов"? Шучу.

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

262
10 января 2011 года
Iktomy
1.2K / / 11.10.2004
Цитата: Kogrom
Да я с тобой согласен во многом. Осталось только понять, где "от простого к сложному", а где "от сложного к простому". Вот ты про C++ пишешь, что он сложен. А как может быть не сложен язык, который является мутантом-гибридом? И можно ли его понять, не зная его предков? И кто из предков был "простым", а кто "сложным"?



Я исходил из критериев скорости написания extended-хеловорда. Согласитесь, на C# это быстрее, чем на С.

Про С++ - его слабость в его силе. Он универсален - отсюда все проблемы. Это лично мое видение. Хотя я далеко не одинок:)

5
10 января 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: Iktomy
Он универсален - отсюда все проблемы.

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

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог