Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Философия программирования > Достижение строгости и лаконичности кода


Автор: Cr@$h 23.8.2006, 12:47
Из разговора про Си.
Цитата(MAKCim @  22.8.2006,  11:20 Найти цитируемый пост)
вообщем я в синтаксисе ничего ужасного не вижу
другое дело, что программы так не пишут, а возможность такого их написания только плюс языку

Основываяь на индустриальных технологий программирования, не вижу ничего хорошего в том, что язык позволяет или даже склонен к написанию непонятных или трудно читаемых программ. Цитата взята из разговора о С, но хочу говорить, не переходя на личности. Постоянно пытаются поднимать процент повторно используемого кода. Хорошим показателем в промышленности (отрасли, индустрии) считается 90%. Плохо написанный код будет сопротивляться и тормозить процесс реюза, сводя на нет все достоинства повторного использования.
Одним из достоинств языков считаю их изначальную предрасположенность к строгости и лаконичности кода. Конечно, всё в конечном итоге определяется культурой программиста, и извратить программу можно ухитриться на любом языке. Другое дело, на некоторых языках это часто может получаться неспециально. Полезно, например, сделав хорошую выборку, поврубаться или даже повторно использовать код, написанный на разных языках. При каком языке больше всего проматюгались, с тем и сами не захотите дружить. Это не руководство к действию. Всё зависит от квалификации писавшего и читающего, и лучшим советчиком здесь может быть объективный опыт, свой или чужой, но обязательно объективный.

Автор: MAKCim 24.8.2006, 09:15
Цитата

Одним из достоинств языков считаю их изначальную предрасположенность к строгости и лаконичности кода

на самом деле по лаконичности кода он (С/С++) очень даже хорош
чего стоит конструкции вида
Код

while (*dest++=*src++);

Код

i+=++j;

Код

while ((int i=--j)>0) {...}

причем эти конструкции не сложны, зная правила их формирования
Цитата

Другое дело, на некоторых языках это часто может получаться неспециально.

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

Автор: albertn 24.8.2006, 09:39
Цитата(MAKCim @  24.8.2006,  09:15 Найти цитируемый пост)
каждый язык поддерживает свой стиль написания, который раскрывает все его возможности. Если их не использовать зачем было уходить из pascal-я
и вообще хочу задать риторический вопрос: почему же такой теоретически и часто практически "корявый" язык как С (и С++) и по сей день занимают ведущее место (или по крайней мере не последнее) в своей области

Ну во-первых давайте разберемся в основных предназначениях языков:
Паскаль:
1. Был создан Никлаусом Виртом в 1970, после его участия в работе комитета разработки стандарта языка Алгол, как язык для обучения процедурному программированию. (взял в википедии)
2. Паскаль это словестный (или как-то так, не помню точного названия), т.е. приходится много писать.
3. Паскаль строгий до такой степени, что переменные надо определять заранее (что тормозит создание проекта)
4. В нем нет полноценных средств работы с указателями и динамической памятью (хотя они неплохо и без них обошлись)
5. Он вообще живой только благодаря Borland Delphi, что вывело его на GUI уровень.
Си:
1. Си был создан для использования в операционной системе UNIX. С тех пор он был портирован на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность; он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. (взял в википедии).
2. Его создавали для программистов, а не для обычных людей, и посокращали в записи все что только можно.
3. Винда и *nix также написаны на нем, и для большей совместимостью с их API логично использовать СИ.
4. У него есть возможность писать проги используя только API, и не использовать MFC, и т.д. (Чего нет в Делфи)
5. Изначально Паскаль язык для новичков, а Си для профессионалов.
Немного лирики:
Всех кого ты не спроси,
программируют на си!
Нынче втретишь ты едвале
тех, кто пишет на паскале.

Автор: pythonwin 12.9.2006, 12:19
Цитата(albertn @  24.8.2006,  16:39 Найти цитируемый пост)

Всех кого ты не спроси,
программируют на си!
Нынче втретишь ты едвале
тех, кто пишет на паскале. 

smile

Добавлено @ 12:21 
Цитата(albertn @  24.8.2006,  16:39 Найти цитируемый пост)
тех, кто пишет на паскале.

дельфистов много, + я знаю 10-15 человек, которые до сих пор пишут на паскале. 

Автор: Cr@$h 12.9.2006, 12:29
Цитата(pythonwin @  12.9.2006,  13:19 Найти цитируемый пост)
дельфистов много

Особенно в Европе.
Цитата(MAKCim @  24.8.2006,  10:15 Найти цитируемый пост)
каждый язык поддерживает свой стиль написания, который раскрывает все его возможности

или сложности и запутанности с подводными камнями.

Автор: maxim1000 12.9.2006, 12:57
Цитата(albertn @  24.8.2006,  08:39 Найти цитируемый пост)
Паскаль строгий до такой степени, что переменные надо определять заранее (что тормозит создание проекта)

1. в этом C и Pascal не отличаются
2. ИМХО, это ускоряет разработку проекта (точнее ту его часть, которая относится к отладке)
Цитата(albertn @  24.8.2006,  08:39 Найти цитируемый пост)
4. У него есть возможность писать проги используя только API, и не использовать MFC, и т.д. (Чего нет в Делфи)

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

Добавлено @ 12:58 
P.S.
я никого не собираюсь агитировать за Pascal (к тому же сам пишу на C++), но если уж писать недостатки, то реальные...

Автор: Cr@$h 12.9.2006, 13:17
Цитата(maxim1000 @  12.9.2006,  13:57 Найти цитируемый пост)
Цитата(albertn @  24.8.2006,  08:39 )
Цитата

Паскаль строгий до такой степени, что переменные надо определять заранее (что тормозит создание проекта)

1. в этом C и Pascal не отличаются
2. ИМХО, это ускоряет разработку проекта (точнее ту его часть, которая относится к отладке)

Не скажи про 1. В С можно переменные в любом месте кода объявлять, а в Pascal только вверху. Последнее, я считаю, прививвает дисциплину, ответственность и сокращает время отладки.

Автор: DemoCode 12.9.2006, 14:12
Цитата(albertn @  24.8.2006,  10:39 Найти цитируемый пост)
4. У него есть возможность писать проги используя только API, и не использовать MFC, и т.д. (Чего нет в Делфи)

А кто ж мешает писать на WinAPI в Delphi? Использовать VCL совсем не обязательно.

Цитата(Cr@$h @  12.9.2006,  14:17 Найти цитируемый пост)
и сокращает время отладки

Под этим подпишусь.

Цитата(albertn @  24.8.2006,  10:39 Найти цитируемый пост)
3. Винда и *nix также написаны на нем, и для большей совместимостью с их API логично использовать СИ.

Что значит большей совместимости? Я пишу на Delphi под винду и на FreePascal под Linux и никогда не встречал каких-то проблем совместимости с API.

Автор: maxim1000 12.9.2006, 15:51
Цитата(Cr@$h @  12.9.2006,  12:17 Найти цитируемый пост)
Не скажи про 1. В С можно переменные в любом месте кода объявлять, а в Pascal только вверху. Последнее, я считаю, прививвает дисциплину, ответственность и сокращает время отладки.

насколько я знаю, в C переменные можно объявлять только в начале блока (в C++ - где угодно)
но тем не менее, получается, что я не совсем правильно понял
в этом смысле мне всё-таки больше нравится подход C - локализовать переменную как можно сильнее, чтобы сократить ту часть программы, в которой эта переменная функционирует - ИМХО, способствует более быстрому пониманию и отладке кода...

Автор: Cr@$h 12.9.2006, 18:29
Цитата(DemoCode @  12.9.2006,  15:12 Найти цитируемый пост)
Цитата(Cr@$h @  12.9.2006,  14:17 )
Цитата

и сокращает время отладки

Под этим подпишусь.

 smile 
Цитата(DemoCode @  12.9.2006,  15:12 Найти цитируемый пост)
Что значит большей совместимости? Я пишу на Delphi под винду и на FreePascal под Linux и никогда не встречал каких-то проблем совместимости с API.

Действительно, необоснованное утверждение.
Цитата(maxim1000 @  12.9.2006,  16:51 Найти цитируемый пост)
насколько я знаю, в C переменные можно объявлять только в начале блока (в C++ - где угодно)

Я это знаю и имел в виду С++, конечно. Просто разговор из него растёт.
Цитата(maxim1000 @  12.9.2006,  16:51 Найти цитируемый пост)
локализовать переменную как можно сильнее, чтобы сократить ту часть программы, в которой эта переменная функционирует 

Для таких частей, где функционирует переменная лучше функции создавать, а вот поддерживать такой код сложнее, т.к. потом не найти, что за переменная, откуда она, что с ней можно сделать и что у неё за тип.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)