Тема: Почему большинство софта для *nix систем написано на С, а не на С++

Ответить в теме
Страница 2 из 6 ПерваяПервая 1 2 3 4 ... ПоследняяПоследняя
Показано с 21 по 40 из 109
  1. Вверх #21
    Посетитель
    Пол
    Мужской
    Возраст
    35
    Сообщений
    202
    Репутация
    7
    Философию я то понял. Это сидеть одной жопой на трёх стульях. Страуструп об этом писал. хотелось и скорости и обьектов, получилось ни то ни другое. все согласны.

    >Если бы С++ действительно был так плох, то на нем не была бы написана большая часть ПО.
    Маркетинг. Даже название банально - взять название самого популярного языка, прикрутить модную програмерскую фишечку. И написать книжечку в стиле "вам больше ненадо думать ниочём".
    Все видели в этом серебряную пулю.

    Хотели сделать адекватный и быстрый язык высокого уровня какой он должен быть. вышел D. только почти никому оно ненадо. Проще сразу managed писать


  2. Вверх #22
    Не покидает форум
    Пол
    Мужской
    Адрес
    Odesa, UA
    Сообщений
    9,728
    Репутация
    2777
    C++ позволяет делать сокрытие реализации. А это для системного программирования не есть хорошо, может привести к злоупотреблениям и потере контроля над ситуацией.
    ____________

  3. Вверх #23
    Посетитель
    Пол
    Мужской
    Возраст
    35
    Сообщений
    202
    Репутация
    7
    ни интерфейсов ни абстрактных методов там нет. Ну да, есть таблица виртуальных функций, непонятно где хранящаяся, а главное зачем, если мы можем сделать биндинг сразу при загрузке библиотеки, стандартными средствами.

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

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

    А то что ты описал это любую функцию можно назвать сокрытием реализации же.

  4. Вверх #24
    Не покидает форум
    Пол
    Мужской
    Адрес
    Odesa, UA
    Сообщений
    9,728
    Репутация
    2777
    Ну я имел в виду немного другое, например пишешь a + b, на C сразу понятно что происходит, а в C++ может быть что угодно.
    ____________

  5. Вверх #25
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Хе-хе...
    Вставлю и я свои 5 копеек.
    Господа плюсовики, объясните мне, скромному программисту, с опытом С++ 15 лет (их которых 6 - PM на чисто плюсовом проекте) такую весчь.
    Большинство приличных языков программирования имеют времЕнную сложность компиляции O(n). Т.е. линейную.
    А вот С++ имеет сложность O(infinity).
    Особо примечателен сей язык однако не этим. А тем, что эта его особенность была обнаружена случайно. После дизайна.
    Это впрочем только одно из свидетельств тщательности проработки концепции сего языка (устойчиво впрочем держащегося на третьем месте по количеству вакансий после джавы и С). Достаточно посмотреть на историю развития языка, чтобы увидеть - архитектором явно выступала богиня победы Ника. Так которая без головы, зато с крыльями.

    И эти люди будут учить меня паттернам проектирования?
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  6. Вверх #26
    Постоялец форума Аватар для Newton
    Пол
    Мужской
    Адрес
    Calgary, Alberta
    Сообщений
    1,105
    Репутация
    825
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Хе-хе...
    Большинство приличных языков программирования имеют времЕнную сложность компиляции O(n). Т.е. линейную.
    А вот С++ имеет сложность O(infinity).
    Особо примечателен сей язык однако не этим. А тем, что эта его особенность была обнаружена случайно. После дизайна.
    А что такое n? Количество строк кода?
    А O(infinity), это из-за шаблонов? Иначе, должно быть так же O(n), я так думаю...
    Моя хата з найкращого краю в світі.

  7. Вверх #27
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Цитата Сообщение от Newton Посмотреть сообщение
    А что такое n? Количество строк кода?
    А O(infinity), это из-за шаблонов? Иначе, должно быть так же O(n), я так думаю...
    Из-за них, конечно.
    Получили тьюринговскую полноту как побочный продукт.
    С "интуитивно понятными" шаблонами со всеми вытекающими.
    Там вообще много в истории С++ таких вещей.
    Хотим чтобы был const - пожалуйста. А теперь мы хотим, чтобы const был немножечко не const - да не вопрос, будет mutable.
    Оправдания об отсутствии хеш-мэпов - мол просто забыли.
    Пустяки, дело житейское.
    И т.п.
    Короче - "Camel is a horse designed by committee"
    Плюс полное игнорирование KISS-принципа, да в общем и многих других.

    Кстати в O(infinity) ничего страшного нету, если знать зачем оно надо и что ты делаешь. Например - компилятор с препроцессором, где директивами препроцессора можно произвольно менять грамматику и лексику языка (как основного так и препроцессора). Раздолье для DSL-изобретателей и вообще полезная штука. С такой фичей шаблоны С++ тихо сдохли бы.

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

    Цитата Сообщение от blackSun Посмотреть сообщение
    Философию я то понял. Это сидеть одной жопой на трёх стульях.
    Я бы все-таки поменял формулировку на более политкорректную. У меня например сложилось впечатление, что многочисленные комитеты пытались притулить многочисленные жопы на один стул.

    Цитата Сообщение от blackSun Посмотреть сообщение
    Все видели в этом серебряную пулю.
    Мне иногда кажется, что если бы не было ажиотажа, С++ мог бы стать нормальным языком.
    Страуструп позже писал, что очень хотел, чтобы С++ не стал "комитетским языком". И выразил надежду, что это у него получилось.
    Исходя из его слов я понял, что надежда заменила ему уверенность.
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  8. Вверх #28
    Посетитель
    Пол
    Мужской
    Возраст
    46
    Сообщений
    237
    Репутация
    18
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Хе-хе...
    Господа плюсовики, объясните мне, скромному программисту, с опытом С++ 15 лет (их которых 6 - PM на чисто плюсовом проекте) такую весчь.
    Большинство приличных языков программирования имеют времЕнную сложность компиляции O(n). Т.е. линейную.
    А вот С++ имеет сложность O(infinity).
    как объяснять то, что не имеет ничего общего с действительностью ?
    сам эту глупость придумал, сам и объясняй

    и вообще, неплохо бы свои причитания по поводу (надуманных) недостатков с++ подкреплять примерами лучших решений, а то выходит сочинение на тему "какая же жизнь тяжелая штука "

  9. Вверх #29
    Посетитель
    Пол
    Мужской
    Возраст
    35
    Сообщений
    202
    Репутация
    7
    Например - компилятор с препроцессором, где директивами препроцессора можно произвольно менять грамматику и лексику языка (как основного так и препроцессора). Раздолье для DSL-изобретателей и вообще полезная штука.
    Lisp! Lisp! Lisp!

  10. Вверх #30
    Посетитель
    Пол
    Мужской
    Возраст
    46
    Сообщений
    237
    Репутация
    18
    перечисляешь языки, которые ты тоже не знаешь ?

  11. Вверх #31
    Посетитель
    Пол
    Мужской
    Возраст
    35
    Сообщений
    202
    Репутация
    7
    pal знаю идеально Erlang, Python, C. Менее Java
    Имел дело со схемкой и ml. писал биндинги под python и erlang на С. на картинках видел лисповые макросы. мне хватило. а вы ?

    и вообще, неплохо бы свои причитания по поводу (надуманных) недостатков с++ подкреплять примерами лучших решений, а то выходит сочинение на тему "какая же жизнь тяжелая штука "
    фанатики такие фанатики. Вам о сложности системы в целом, о том что возникает при разработке, а вы требуете четырёхстрочных примеров.

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

  12. Вверх #32
    Посетитель
    Пол
    Мужской
    Возраст
    46
    Сообщений
    237
    Репутация
    18
    возвращайся, когда поймешь, что до идеала тебе далеко и выйдешь из write-only mode

  13. Вверх #33
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Цитата Сообщение от pal Посмотреть сообщение
    как объяснять то, что не имеет ничего общего с действительностью ?
    сам эту глупость придумал, сам и объясняй
    Ну, если вы не знаете что такое тьюринговская полнота и чем она чревата - то это не ко мне, а на пересдачу.
    Но так, чисто теоретически на шаблонах С++ можно написать программу, которая будет компилироваться вечно. На сферическом компиляторе в вакууме, разумеется, но факт.

    Цитата Сообщение от pal Посмотреть сообщение
    и вообще, неплохо бы свои причитания по поводу (надуманных) недостатков с++ подкреплять примерами лучших решений, а то выходит сочинение на тему "какая же жизнь тяжелая штука "
    А можно наоборот?
    Давайте посоревнуемся, вы напишете мне здесь квин-программу на С++ с использованием шаблонов проектирования и ООП. А мы посмотрим.
    Программирование - это не только убогая иерархическая модель GUI ad hoc и рисование интерфейсов.
    А еще и многое другое.

    Кстати, вопрос по С++ - в каких случаях при вызове легальных posix интерфейсов автоматическая переменная может быть очищена без вызова деструктора?
    И как это решить на С++ не отказываясь от деструкторов в принципе?

    PS
    Что интересно, например на форумах перловиков часто видишь аббревиатуру TMTOWTDI. Но вот на С++ тусовках главное слово - UB.
    Продуманный дизайн такой продуманный...
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  14. Вверх #34
    Посетитель
    Пол
    Мужской
    Возраст
    46
    Сообщений
    237
    Репутация
    18
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Ну, если вы не знаете что такое тьюринговская полнота и чем она чревата - то это не ко мне, а на пересдачу.
    почему сразу не таблицу умножения ?
    Но так, чисто теоретически на шаблонах С++ можно написать программу, которая будет компилироваться вечно. На сферическом компиляторе в вакууме, разумеется, но факт.
    создается впечатление, что о turing completeness языка шаблонов ты узнал из какой-то статьи, доказывающей, что это и есть та причина, по которой ява лучше
    потому что, если бы ты узнал об этом из стандарта, то ты бы также знал, что все, что требует больше 17 шагов - не с++

    однако, это еще не все
    в твоем определении скорость компиляции одного пробела пропорциональна бесконечности, что на мой скромный взгляд является чушью

    А можно наоборот?
    с какой стати ?
    ты говоришь "жить тяжело"
    я говорю "да"
    все довольны
    Давайте посоревнуемся, вы напишете мне здесь квин-программу на С++ с использованием шаблонов проектирования и ООП. А мы посмотрим.
    не вдохновляет
    нагугли первую попавшуюся на с и добавь const
    ооп никто не навязывал
    Программирование - это не только убогая иерархическая модель GUI ad hoc и рисование интерфейсов.
    А еще и многое другое.
    казалось бы, причем тут с++ и шаблоны ?
    Кстати, вопрос по С++ - в каких случаях при вызове легальных posix интерфейсов автоматическая переменная может быть очищена без вызова деструктора?
    И как это решить на С++ не отказываясь от деструкторов в принципе?
    longjmp ? не пользоваться
    PS
    Что интересно, например на форумах перловиков часто видишь аббревиатуру TMTOWTDI.
    это не то, чем стоит гордиться
    Но вот на С++ тусовках главное слово - UB.
    в этом и разница между детским садом с определением в виде единственной реализации и международным стандартом
    Продуманный дизайн такой продуманный...
    какой есть
    лучше пока не придумали

  15. Вверх #35
    Посетитель
    Пол
    Мужской
    Возраст
    35
    Сообщений
    202
    Репутация
    7
    Код:
    возвращайся, когда поймешь, что до идеала тебе далеко.
    я скромно назвал три языка. мы говорили только о си. И я вроде бы уже не отрицал что мне просто неинтересен С++ и я против него.
    Код:
    и выйдешь из write-only mode
    ну вы добились того что я вас уважаю и считаю хорошим демагогом.
    Если вы хотели чтобы я признал плюсы хорошим языком то вы не показали ничего хорошего. понимать на собственном опыте за пять лет разработке мне не хочется. хватает уже блогов, и личных знакомств с вменяемыми людьми.
    Если вы о том что ненадо писать если досконально не знаешь. Ну дак я писал с точки зрения того кто хорошо знает Си. моё законное мнение что Си итак слишком сложен. И "Си с классами" ненужен, в той форме в которой он в С++. Это при том что я не школьник, знающий только паскаль и отвергающий всё другое.

  16. Вверх #36
    Частый гость Аватар для homo ludens
    Пол
    Мужской
    Сообщений
    751
    Репутация
    141
    Цитата Сообщение от pal Посмотреть сообщение
    создается впечатление, что о turing completeness языка шаблонов ты узнал из какой-то статьи, доказывающей, что это и есть та причина, по которой ява лучше
    потому что, если бы ты узнал об этом из стандарта, то ты бы также знал, что все, что требует больше 17 шагов - не с++
    Вообще-то об этом я узнал из той самой статеечки про реализацию решета Эратосфена на шаблонах, где-то так через месяц-два после ее выхода. Я даже год забыл когда она вышла, но помню радостный восторг на форумах - гляди-ко, воно еще и так умеет.
    А вот про 17 шагов в той версии стандарта ничего не слышал. Хотя правда, стандарт к тому времени уже похерил за ненадобностью.

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

    Цитата Сообщение от pal Посмотреть сообщение
    с какой стати ?
    ты говоришь "жить тяжело"
    я говорю "да"
    все довольны
    Мне тяжело???
    Не дождетесь!
    Мне как раз очень даже легко, и на жизнь не жалуюсь.
    А как на С переполз - вообще веселуха пошла.

    Цитата Сообщение от pal Посмотреть сообщение
    не вдохновляет
    нагугли первую попавшуюся на с и добавь const
    ооп никто не навязывал
    А нафиг С++ без ООП? Экцепшины юзать, в память о бейсиковском on error?

    Цитата Сообщение от pal Посмотреть сообщение
    longjmp ? не пользоваться
    1. Зря, есть очень красивые приложения, к сожалению в общем случае на С++ нереализуемые. На С - пожалуйста. Монотридный сервачок на них - просто прелесть. И никаких там Reactor, Proactor и прочих умных слов...
    2. Ответ неправильный. Хотя thread'ами вы наверное тоже не пользуетесь?

    Цитата Сообщение от pal Посмотреть сообщение
    это не то, чем стоит гордиться
    С твоей точки зрения, чем больше табличек с запретами - тем лучше? В нормальных языках люди ищут больше возможностей. На С++ - только запрещают. Чем больше запретил - тем ты круче.
    Столько вариантов кастинга как в С++ наверное нигде больше в мире нет нет. Лишь бы драгоценный программист не ошибся ненароком.
    О статическом чекинге архитекторы явно не подозревали, кто бы им splint показал что-ли. Простая мысль, что компилятор должен компилировать, а искать ошибки - искатель ошибок для кого-то похоже весьма не проста.
    Впрочем о чем можно говорить с архитекторами, не понимающим принцип KISS...

    Цитата Сообщение от pal Посмотреть сообщение
    в этом и разница между детским садом с определением в виде единственной реализации и международным стандартом
    Ага, постоянные дискуссии о UB - это оччень серьезно, это не детский сад.
    И вообще - С++ единственный язык с международным стандартом! Иначе UB было бы везде.
    И тогда всем пришел бы полный UB!
    The future is already here - it is just unevenly distributed. (c) W. Gibson

  17. Вверх #37
    Посетитель
    Пол
    Мужской
    Возраст
    46
    Сообщений
    237
    Репутация
    18
    Цитата Сообщение от homo ludens Посмотреть сообщение
    Вот без первых трех слов - полностью с вами согласен. Чушь неимоверная, которую я никогда не говорил.
    т.е. это мне показалось, что там сложность компиляции вообще не зависит от размера программы ?
    А нафиг С++ без ООП? Экцепшины юзать, в память о бейсиковском on error?
    о том, что с++ - мультипарадигменный язык, написаны не просто статьи, а целые книги
    1. Зря, есть очень красивые приложения, к сожалению в общем случае на С++ нереализуемые.
    это приложения для бедных и в общем случае они нереализуемы ни на чем
    кстати, если просто переключать потоки, не убивая их неестественным образом, то это будет работать
    даже если убивать, но применять аналог pthread_cleanup_push (который совсем не злые создатели с++ придумали), то тоже будет работать
    На С - пожалуйста.
    прикол в том, что то же самое можно сделать и на с++
    но не нужно
    Монотридный сервачок на них - просто прелесть.
    это называется userlevel threads
    и я имел счастье сталкиваться с этим уродством в freebsd
    это был костыль с O(n^2) сложностью переключения контекста, созданный теми, кто не осилил kernellevel threads
    2. Ответ неправильный. Хотя thread'ами вы наверное тоже не пользуетесь?
    так уж получилось, что давно и продуктивно работаю с massive multithreaded приложениями
    ответ остается прежним: longjmp - не пользоваться
    userlevel threads - тоже
    С твоей точки зрения, чем больше табличек с запретами - тем лучше? В нормальных языках люди ищут больше возможностей. На С++ - только запрещают. Чем больше запретил - тем ты круче.
    в с++ не больше запретов, чем там, где ты подумал, просто они нагляднее(что есть плюс)
    Столько вариантов кастинга как в С++ наверное нигде больше в мире нет нет. Лишь бы драгоценный программист не ошибся ненароком.
    я скажу больше, в с++ бесконечное число вариантов кастинга
    любой желающий может написать свой вариант xxx_cast<>, это просто очередной вызов функции, у которой тип возвращаемого значения отличается от типа аргумента
    почему тебя не смущает, что в с есть много разных функций, в которых можно запутаться ?
    О статическом чекинге архитекторы явно не подозревали, кто бы им splint показал что-ли. Простая мысль, что компилятор должен компилировать, а искать ошибки - искатель ошибок для кого-то похоже весьма не проста.
    а статический чекер телепатически будет программу читать или все же ему надо включать в себя компилятор без бекенда ? а потом про обнаруженные дополнительные возможности оптимизации он опять же будет телепатически сообщать компилятору ?
    Впрочем о чем можно говорить с архитекторами, не понимающим принцип KISS...
    я утверждаю, что они нашли наилучший вариант, удовлетворявший базовым требованиям
    проще было некуда
    кому-то может показаться, что на дереве жить проще, но это не так
    вариант со статическим чекером мы уже рассмотрели, так же будет и с остальными
    Ага, постоянные дискуссии о UB - это оччень серьезно, это не детский сад.
    И вообще - С++ единственный язык с международным стандартом! Иначе UB было бы везде.
    И тогда всем пришел бы полный UB!
    lol
    с++ унаследовал понятие undefined behavior из с
    который тоже международный стандарт
    не надоело генерить ?

  18. Вверх #38
    Постоялец форума Аватар для Newton
    Пол
    Мужской
    Адрес
    Calgary, Alberta
    Сообщений
    1,105
    Репутация
    825
    Так я не пойму, вы критикуете С++ или высказываете пожелания, что вы хотели бы в нем видеть?
    Моя хата з найкращого краю в світі.

  19. Вверх #39
    Постоялец форума Аватар для glyph
    Пол
    Мужской
    Сообщений
    2,210
    Репутация
    422
    Цитата Сообщение от blackSun Посмотреть сообщение
    pal знаю идеально Erlang, Python, C. Менее Java
    Имел дело со схемкой и ml. писал биндинги под python и erlang на С. на картинках видел лисповые макросы. мне хватило. а вы ?
    Наломать тебе всю малину? Держись за табуретку: SWIG!!11

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

  20. Вверх #40
    Посетитель
    Пол
    Мужской
    Возраст
    35
    Сообщений
    202
    Репутация
    7
    SWIG не относится к питону аж никак, ящитаю.
    и pyrex, и pypy...
    И тонкости работы Psyco и парсинга AST это тоже для меня слишком.
    Штуки конечно интересные, но мне хватило тру C API и почитать исходники CPython(были горячие споры одно время... после прочтения реализации for и lists все были немножечко в шоке с и костыльности). Ваще в любые исходники на Си врубаешься практически сразу. То же ядро линупса открыть, всё как на ладони. чего не скажешь о плюсах... или жаве. хотя её сильно спасает IDE.

    Код:
    Сборщик мусора ортогонален замыканиям и лямбдам.
    незнаю. Читал что без автоматического управление памятью делать замыкания совсем грустно...
    всёравно лисп как бы первый где это сделали. и лисп как бы построен на лямбда-исчислении.


Ответить в теме
Страница 2 из 6 ПерваяПервая 1 2 3 4 ... ПоследняяПоследняя

Похожие темы

  1. З "Win" на "Nix" + GUI
    от YOKO в разделе Программное обеспечение
    Ответов: 10
    Последнее сообщение: 18.10.2007, 14:50
  2. 3d графика и *NIX системы
    от Alisan в разделе Программное обеспечение
    Ответов: 23
    Последнее сообщение: 26.02.2007, 13:27
  3. Ищу *nix livecd с GCC компилятором
    от cTcangel в разделе Программное обеспечение
    Ответов: 54
    Последнее сообщение: 19.12.2006, 00:35
  4. FTP-client API for *nix
    от krieger в разделе Программирование
    Ответов: 4
    Последнее сообщение: 23.05.2005, 03:26

Социальные закладки

Социальные закладки

Ваши права

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