LINUX.ORG.RU
ФорумTalks

[c] [c++] [c#] Тенденция, однако

 ,


0

1

Почему все сейчас отказались от чистого Си? Почему все ломанулись в это объектно-ориентированное программирование? Даже простейшие программы пишут с использованием ООП. Почему не существует IDE для Си уровня проприетарной Visual Studio? Получается замкнутый круг. С одной стороны, на Си не пишут, потому что для него нет крутых «интырпрайзных» IDE. С другой стороны, разработчики тех самых IDE не спешат поддерживать Си. Пустую форму с кнопкой, при нажатии на которую выскакивает «Hello, world!», быстрее наклепать на C++. Но это ведь преимущества IDE, а не языка, да?

Ассемблер неплох, но не переносим. Си уровнем чуть повыше, на этом уровне уже достигается переносимость. Зачем подниматься выше? Зачем тащить за собой ООП, как гроб? Я признаЮ, что есть вещи, где ООП позарез нужно, но ведь нужно оно не всегда.

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

В чем секрет популярности коммерческих продуктов? Когда продукт перестает быть конкурентноспособным, менеджеры придумывают фичу - как правило, очередной уровень абстракции, скрывающий реализацию чего-либо, или «прогрессивный» интерфейс типа M$ Ribbon - и агрессивно продвигают эту фичу как современный стандарт. Посмотрите на БД Oracle: объемные SQL-запросы, раздутые на два экрана. Сейчас интенсивное развитие многих продуктов завершилось. Тот же M$ Office 2003 по функциональности почти равен 2010-му. Если скаммерсанты не будут придумывать очередные риббоны, дотнеты и прочее, то люди перестанут покупать новые версии. Главный недостаток такого подхода - раздувание программного обеспечения.

Так хочется взять современные программные продукты, технологии и концепции и очистить от шелухи и листьев, подобно кочану капусты. Пройтись бритвой Оккама, докопавшись до минимально необходимого, разбив оковы объектно-ориентированной зависимости. Толсто, да. Толсто.

Ответ на: комментарий от ns_ramesses

> потому что удобно

Зато C++ учить на порядок дольше, чем Си.

да, но некоторые таки научаются

И он богат лишними сущностями.

это высказывание требует обоснования

Двумя руками за! Но в Виме не кинешь на форму компонент, не кликнешь по нему и не запустить софтину.

1) man glade, man qt designer
2) кидать на форму компоненты - это меньше 1% времени разработки при разработке хоть сколько нибудь большого проекта
3) запустить - легко

> не пишут проекты целиком потому что приходится на каждый чих писать велосипед

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

не думаю что это допустимое обобщение, о чём там задумываются «люди» в целом я не стал бы рассуждать

shty ★★★★★
()
Ответ на: комментарий от hibou

> Я думаю, если вместо ведроида туда воткнуть симбиан, то проц можно будет поставить в 2 раза слабее.

Дело в грандиозном просчете. Google вместо того, чтобы изначально создавать и развивать нативные приложения для Android, встроило туда нечто яваподобное и всем наказала писать софт для этой «Явы».

ns_ramesses
() автор топика
Ответ на: комментарий от ns_ramesses

>> А что ты хочешь увидеть в такой IDE ?

То же, например, что проприетарная Delphi дает объектному паскалю или проприетарная M$ VS дает сям++.

Ну нахрена? Ты хочешь увидеть сотни непереносимого кода качества средней поделки на Delphi и «программистов» которые вообще не знают, что существует компилятор и линковщик?

AptGet ★★★
()
Ответ на: комментарий от ns_ramesses

ns_ramesses> 1. Объектной ориентированностью.

При мультипарадигменности - на это пофиг. Без ООП на C++ писать можно. И реализация ООП там далеко не каноничная.
Вот в жабе без ООП обойтись нельзя вообще никак. В программе так или иначе конструкции ООП будут (как минимум один класс быть обязан) - язык не позволяет использовать его без ООП. Это большой недостаток жабы.

ns_ramesses> 2. Сложностью, перегруженностью конструкциями, структурами данных.

Это как раз то, чем и плох C++.

Quasar ★★★★★
()
Ответ на: комментарий от ns_ramesses

Дело в грандиозном просчете. Google вместо того, чтобы изначально создавать и развивать нативные приложения для Android, встроило туда нечто яваподобное и всем наказала писать софт для этой «Явы».

man android ndk

shty ★★★★★
()
Ответ на: комментарий от CrossFire

CrossFire> Программировать на С++ легче, чем на чистом Си

Нефиг использовать инструмент там, где он не приспособлен.

CrossFire> при этом, чем больше проект, тем большие преимущества в его поддержке дает ООП(man инкапсуляция). Опять же при этом скорость работы программы практически та же, некоторые места/модули можно писать хоть на Си, хоть на асме.

В случае с C++ только повышается запутанность кода, а следовательно будет тяжелее оптимизировать и вылавливать баги.

CrossFire> man Gtk

На Tk это делается ещё быстрее.

Quasar ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

> Для других ООП кажется весьма изящным (в качестве удачного воплощения ООП приведу Qt, и думаю, что многие со мной согласятся), с которым намного легче разрабатывать и поддерживать архитектуру приложения

ООП-язык намного дольше учить, чем простой самодостаточный тьюринг-полный язык Си.

Хотя было бы интересно услышать, в чём ущербность ООП.


В самом существовании концепции. Лишние сущности, лишние конструкции. Без них можно обойтись. Скажите, на C++ можно создать программу «Hello, world!», в которой не будет ни единого объекта/класса? И... вам не кажется, что мы ходим по кругу?

ns_ramesses
() автор топика

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

Zenom ★★★
()
Ответ на: комментарий от Deleted

> В тред реквестируется хардкорный C код

Хардкор создается программистом по желанию. Стандарт языка гармоничный и прекрасный.

ns_ramesses
() автор топика
Ответ на: комментарий от ns_ramesses

Да ладно. Стандарт. Ты стандартом что ли решать задачу будешь? Всё равно придётся наплодить 1000 и 1 костыль и велосипед. Никуда не деться. Это же всё не от хорошей жизни происходит.

Deleted
()
Ответ на: комментарий от Quasar

>Нефиг использовать инструмент там, где он не приспособлен.

Ну а я и не говорю, что чистый Си ненужен, ни в коем случае. Я просто пытался объяснить, почему большинство проектов на С++.

На Tk это делается ещё быстрее.


Это был всего лишь пример тулкита «не на С++»

В случае с C++ только повышается запутанность кода, а следовательно будет тяжелее оптимизировать и вылавливать баги.


Спорно, но мне не охота спорить.

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

CrossFire ★★★★★
()
Ответ на: комментарий от ns_ramesses

ns_ramesses> То же, например, что проприетарная Delphi дает объектному паскалю или проприетарная M$ VS дает сям++.

За Delphi надо руки отрывать. Мышекодерство - для обезьян.

Quasar ★★★★★
()
Ответ на: комментарий от Zenom

Да, действительно, ошибся, признаю, их и С# нет. Точнее есть, но сторонние классы.

hibou ★★★★★
()
Ответ на: комментарий от shty

> потому что ТС, как яркий представитель нубошколоты, думает что таким образом он выражает своё чувство солидарности с бородатыми хацкерами 80-х

Ошибаетесь. Я и в жизни такой - отбрасываю все лишние сущности. Например, в лютые морозы не надеваю два свитера - это рвет мне шаблон, свитер нужен один, но очень теплый, иначе рука тянется к бритве Оккама. Когда покупаю новое мыло, то слепливаю его со старым, а не кладу рядом - лишние сущности не пложу. Или, например, не храню вещи в коробках вообще. В коде удаляю лишние переводы строк и пробелы. ТИМ - Максим Горький.

ns_ramesses
() автор топика
Ответ на: комментарий от ns_ramesses

>Скажите, на C++ можно создать программу «Hello, world!», в которой не будет ни единого объекта/класса?

Можно. Ну никакой разницы, только cout вместо printf(), но это не важно.

CrossFire ★★★★★
()
Ответ на: комментарий от ns_ramesses

> Лишние сущности, лишние конструкции.

Они не лишние. Они просто более общие.

Без них можно обойтись.

Также как и без многого другого. В конце концов почему C, а не Ada? POSIX и для ada определяет API.

Скажите, на C++ можно создать программу «Hello, world!», в которой не будет ни единого объекта/класса?

Тебе уже раз пять сказали, что можно.

kim-roader ★★
()
Ответ на: комментарий от Chaser_Andrey

> Может, для более объективной оценки стоит прочесть Б.Страуструпа?

Хватило Кернигана. Читать того, кто считает нормальным использовать классы там, где без них можно обойтись, я не собираюсь. Не по пути.

ns_ramesses
() автор топика
Ответ на: комментарий от shty

shty> ну что ж так палиться-то? :) на каком классе задач?

Создание прикладных приложений, не занятых интенсивными вычислениями (если говорить о чистом Python), а также быстрая разработка одноразовых программ. Для остального есть свои инструменты.

Quasar ★★★★★
()
Ответ на: комментарий от Loki29

> Почему не существует IDE для Си уровня проприетарной Visual Studio? А зачем? nano+gcc не хватает?

Хватает. Но людям нужна RAD IDE.

ns_ramesses
() автор топика
Ответ на: комментарий от Zenom

> Основной род деятельности?

Студент.

Опыт в области разработке ПО?


Серьезный отсутствует.

ns_ramesses
() автор топика
Ответ на: комментарий от CrossFire

CrossFire> Ну а я и не говорю, что чистый Си ненужен, ни в коем случае.

Что ты подразумеваешь под чистым C? C с базовой библиотекой? Если допустимо подключение других библиотек - чистый C можно использовать не только для системного программирования, но и для создания прикладных программ. Только за памятью следить надо пристально, чтобы не потекла.

Quasar ★★★★★
()
Ответ на: комментарий от hibou

> Скоро небось закон выйдет, что без зонда жить нельзя.

Доктор, open source-зонд - это плохо?

ns_ramesses
() автор топика

Что за ерунда, IDE для C++ прекрасно подходят и для C.
А используют С++ потому, что удобно (в сравнее с C). Хоть и далеко не идеал, конечно.

Ты, похоже, совсем не программист, какая тебя разница а?

anatolat
()
Ответ на: комментарий от ns_ramesses

>Скажите, на C++ можно создать программу «Hello, world!»

#include <cstdio>

int main()
{
	printf("hello world");
	return 0;
}
?

seed_stil ★★
()
Ответ на: комментарий от Quasar

>Tk разве на C++?

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

CrossFire ★★★★★
()
Ответ на: комментарий от ns_ramesses

да.

Другое дело, что ide, по сути, нету. Anjuta, последний раз когда я ее видел, использовала устаревший метод построения интерфейса - через libglade, и, к тому же, жутко глючила.

hibou ★★★★★
()
Ответ на: комментарий от CrossFire

CrossFire> В чем профит перед С++?

Профит в меньшем потреблении ресурсов и возможности сравнительно легко переносить приложения.

Quasar ★★★★★
()
Ответ на: комментарий от CrossFire

CrossFire> Где я это говорил?

Ты сказал, что привёл пример тулкита не на C++. Я тоже привёл. И на нём это всё делается ещё проще и быстрее. И без костылей при этом. То, что ты привёл - это костыльный GTK.

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

>Ты сказал, что привёл пример тулкита не на C++. Я тоже привёл. И на нём это всё делается ещё проще и быстрее. И без костылей при этом. То, что ты привёл - это костыльный GTK.

Два примера. Не вижу проблемы, в тулкитосрач вступать не намерен.

Профит в меньшем потреблении ресурсов и возможности сравнительно легко переносить приложения.


Так и не увидел профита по сравнению с С++.

CrossFire ★★★★★
()
Ответ на: комментарий от ns_ramesses

> ООП-язык намного дольше учить, чем простой самодостаточный тьюринг-полный язык Си.

В одном предложении столько бреда, что аж моцк взрывается.

1. Это отколе C++ является ООП-языком? Он всего лишь поддерживает парадигму ООП.

2. Что такое «ООП-язык»?

3. C++ тоже является самодостаточным тьюринг-полным языком.

4. Если в языке есть возможность чего-то сделать, то это не означает, что её обязательно надо везде использовать.

5. Если так сложно выучить простой C++, то о каком программировании может идти речь, если там нужно постоянно изучать тонны новой информации???

> Скажите, на C++ можно создать программу «Hello, world!», в которой не будет ни единого объекта/класса?

chaser@localhost ~/tmp/tmps $ cat helloword.cpp
#include <stdio.h>

int main ()
{
        printf("Hello, World!\n");
        return 0;
}
chaser@localhost ~/tmp/tmps $ g++ helloword.cpp 
chaser@localhost ~/tmp/tmps $ ./a.out 
Hello, World!
chaser@localhost ~/tmp/tmps $
Ещё вопросы?

> В самом существовании концепции. Лишние сущности, лишние конструкции. Без них можно обойтись. Отучаемся говорить за всех. Если тебе она не нужна - значит ты или не понял её, или в твоих задачах она тебе действительно не нужна, или ты действительно хочешь выглядеть хакиром 80-х, пишущим низкоуровневый код, и плюющим на все абстракции. Такое впечатление, что ты сам мало разбираешься в ООП и его предназначении. Никакой аргументации и конкретики, одни опровержения.

И вообще, ООП и C++ не отождествляй.

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от ns_ramesses

Ты какой-то непоследовательный. Зачем RAD IDE сям? Как RAD IDE? Куда RAD IDE? Почему RAD?

Это ж, блин, C! Не набор библиотек в придачу вроде Qt, Gtk+[бла-бла-бла]. Как ты находишь взаимосвязь между C и RAD?

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от ns_ramesses

> Я и в жизни такой - отбрасываю все лишние сущности.

А... ну так это проясняет многое (например, неаргументированное непринятие объектной модели). Нормальность сего явления и фобий лишних сущностей оставим для врачей-психоаналитиков.

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

Chaser_Andrey ★★★★★
()

Пустую форму с кнопкой, при нажатии на которую выскакивает «Hello, world!», быстрее наклепать на C++.


Пустую форму с кнопкой, при нажатии на которую выскакивает «Hello, world!», быстрее наклепать на Delphi Prysm

Но это ведь преимущества IDE, а не языка, да?

На этом преимущества ide заканчиваются, ага.

Karapuz ★★★★★
()

Пустую форму с кнопкой, при нажатии на которую выскакивает «Hello, world!», быстрее наклепать на C++.


Пустую форму с кнопкой, при нажатии на которую выскакивает «Hello, world!», быстрее наклепать на Delphi Prysm

Но это ведь преимущества IDE, а не языка, да?

На этом преимущества ide заканчиваются, ага. http://habrahabr.ru/blogs/delphi/111554/ http://www.rsdn.ru/forum/flame.comp/4010109.all.aspx

Karapuz ★★★★★
()
Ответ на: комментарий от luke

linux написан на Си, что тебе ещё надо?


Зато ЛОР написан на ОО Java, ЛОР совершенен, в нем ничего лишнего, никаких MS Ribbon-ов смайликов и прочих дотнетов

Karapuz ★★★★★
()
Ответ на: комментарий от ns_ramesses

>Им удобно, потому что для Си нет нормальных IDE.

Hормальным IDE для сей годков примерно столько же сколько и тебе :)

http://ru.wikipedia.org/wiki/Microsoft_QuickC
http://ru.wikipedia.org/wiki/Turbo_C

Ответь на вопрос зачем нужны ЯП вообще и всё встанет на сои места.


А на сях пишут меньше чем на ++ и всяких более высокоабстрактных сущностях потому как это ТЯЖЕЛО :) Человеческий мозг слаб для того чтобы асилить сложные конструкции (а они всё сложнее и сложнее) на низкоуровневых макроассемблерах типа сей :)

sS ★★★★★
()
Ответ на: комментарий от tailgunner

ЗЫ: кстати в первой IDE написал в своё время менеджер расширенной памяти со сжатием блоков. ~80 000 строк на ASM :)

После чего с подвигами на ASM завязал навсегда

sS ★★★★★
()

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

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

Да, C++ ­— далеко не идеальный, но все его костыли имеют свои исторические причины, об этом у Страуструпа даже отдельная книжка есть. И ООП — не всегда единственно возможный вариант решения проблемы (STL в C++, например, ну совсем не ООП).

Да, в мелких программах можно писать хоть на чём и хоть как, особенно, если исходники после написания предполагается сразу выбросить, но на одних таких программах далеко не уедешь. Мир велосипедов не нужен!

Да, ресурсы тоже нужно экономить, но если пожертвовав пусть даже 50% ресурсов, мы получим 500% в скорости и удобстве разработке, то оно будет того стоить. Где-то, например, на микроконтроллёрах, экономия ресурсов действительно критична, но там и пишут на чистом C, следя за каждым байтиком. И уж если говорить о C++, то о никакой трате ресурсов речи не идёт.

В общем, либо читай умные книги, либо «толстячок, уходи».

Yareg ★★★
()
Ответ на: комментарий от sS

> При чём тут толщина ?

При том, что обе IDE сейчас являются каменным веком.

Я вообще удобнее первого ничего не встречал долгое время :)

Ога. Только это «долгое время» началось лет 20 назад и закончилось когда, лет 15 уже? %)

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.