LINUX.ORG.RU
Ответ на: комментарий от emulek

Здравая мысль в этом есть, но если это правда, то зачем нужен C?

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

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

1) Компилятор и рантайм Java оптимизирует. В т.ч. есть всякие AtomicReference<T>, есть volatile, о которых компилятор и рантайм знают специально

2) Если нужен буфер, то есть
http://www.docjar.com/docs/api/sun/misc/Unsafe.html
Но за его использование будут ненавидеть, т.к. только садомазо и авторы гиперкластеров на Windows 3.11 вручную работают с буфером

3) А еще куски кода можно написать на си и цеплять по JNI

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от vertexua

Про defensive programming когда-то в жизни слышал? Сегфолты при нем - охрененная редкость. Про отказ от динамического выделения памяти? И все это - наш проект.

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

3) А еще куски кода можно написать на си и цеплять по JNI

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

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

Всё то же самое можно сделать и на яве, если еще не сделано. А vromanov длины строк хранит, т. е., видимо, терминаторы не используются.

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

Терминаторы не используются, например, когда надо получить не только целое но и части. Например в буфере «Вася Пупкин» и есть методы - getFullName, getFirstName, getLastName. В этом случае можно возвращать std::string

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

Просто на C++ это можно делать быстрее чем на С, а на java можно достигнуть просто космической скорости!

с этим тоже придётся согласиться...

emulek
()
Ответ на: комментарий от vromanov

Просто на C++ это можно делать быстрее чем на С, а на java можно достигнуть просто космической скорости!

(тут должна быть ссылка про Томми)

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

быдлокод можно писать на любом ЯП ИМХО

Вопрос - где проще.

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

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

Да, даже мне приходилось писать на подмножестве С++ без шаблонов (и, следовательно, STL) и исключений, ибо тулчейн для целевой платформы не поддерживал. Просто «Си с классами». Безусловно удобнее простого Си, но всё равно не то :)

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

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

Фи, как категорично

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

Я бы вообще сказал, что С это подмножество С++ :).

А я бы сказал что C++ это надстройка над C, причем не очень удачная и гармоничная.

P.S. Елы-палы, больше всего глючного софта на планете написано именно на «плюсах». Пруфов нет, но есть внутренняя уверенность.

dvl36
()
Ответ на: комментарий от vromanov

Я бы вообще сказал, что С это подмножество С++ :).

Не совсем (совсем не?) подможество.

int main (int argc, char *argv[]) {
    int new, class, public;
    return 0;
};
/tmp $ gcc code.c 
/tmp $ g++ code.c
code.c: In function ‘int main(int, char**)’:
code.c:3:9: error: expected unqualified-id before ‘new’
     int new, class, public;
         ^
yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

man множества, подмножества.
Если бы подмножество содержало все эл-ты множества, оно бы было самим множеством.

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

P.S. Елы-палы, больше всего глючного софта на планете написано именно на «плюсах». Пруфов нет, но есть внутренняя уверенность.

Дело не в языке, а в программистах.
Но я думаю C++11 исправит ситуацию

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

man множества, подмножества.

Тебе самому стоит это повторить.

Если бы подмножество содержало все эл-ты множества, оно бы было самим множеством.

И как ты сюда это приплёл?

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

Не совсем (совсем не?) подможество.
совсем не

ты что хотел сказать ? Что в С отсутствует определенная часть зарезервированных слов С++. Ну это совершенно нормально для подмножества.

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

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

Не хочешь исключения - не юзай. Не хочешь шаблонов - не юзай. mangling никому ничего плохого не сделал. Что еще?

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

ты что хотел сказать ? Что в С отсутствует определенная часть зарезервированных слов С++. Ну это совершенно нормально для подмножества.

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

Если уж говорить о множествах, то тут больше справедливо пересечение, но никак не включение.

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

Не хочешь исключения - не юзай. Не хочешь шаблонов - не юзай

Хочу, но, например, в силу ограничений целевой платформы не могу (выше писал). А вендор ведь не просто так все эти фичи забанил. А без них С++ уже не С++, так, одно название.

mangling никому ничего плохого не сделал

Вспоминаем извечную проблему биндингов.

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

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

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

dave ★★★★★
()
Последнее исправление: dave (всего исправлений: 1)
Ответ на: комментарий от dave

В языках со сборкой мусора ломается сам сборщик мусора :). Очень забавно наблюдать когда сервер под нагрузкой решает провести полную сборку мусора минут так на 10..

Я программирую фуллтиме с 89-го года. За это время захватил и бейсик, паскаль, C#, C/C++ (под виндой и под линуксом) и Java. Сижу на линуксе, а MCSE получил почти 20 лет назад. Итого кругозор некоторый имеется :). Короче, можно хорошо писать на любом языке. Но у некоторых есть фундаментальные ограничения, выше которых не прыгнуть.

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

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

вендор ведь не просто так все эти фичи забанил

Вендор просто не осилил, что вполне нормально. Другой вопрос, зачем вендор писал компилятор с нуля.

Шаблонам все равно, где будет работать программа. Исключения немного усложняют рантайм, и их обычно можно отключить.

А без них С++ уже не С++

Си с классами - уже большой шаг вперед.

Вспоминаем извечную проблему биндингов

Проблема не с манглингом, а с ABI вообще, но это редко бывает проблемой.

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

Очень забавно наблюдать когда сервер под нагрузкой решает провести полную сборку мусора минут так на 10..

Дятел не слышал про real-time GC без пауз?

Я программирую фуллтиме с 89-го года. За это время захватил и бейсик, паскаль, C#, C/C++ (под виндой и под линуксом) и Java.

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

Итого кругозор некоторый имеется :)

У меня для тебя очень плохие новости.

anonymous
()
Ответ на: комментарий от wota

в С++14, в gcc и clang по дефолту доступны

Это даже еще не стандарт. Только буратино будет пользоваться фичами, отсутствующими в официальном стандарте и поддерживающимися 1% от компиляторов.

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

Это даже еще не стандарт

да

и поддерживающимися 1% от компиляторов.

gcc + clang + icc - это как раз самый мейнстрим (все они умеют VLA для С++), есть еще популярный msvc, но вот незадача - он не умеет C99 и VLA в том числе

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

А то, что ты некомпетентное, упертое, неумное, самоурвенное чмо - тебе не похрен? Жаль. Так и сдохнешь чмом.

anonymous
()
Ответ на: комментарий от dvl36

Зато в плюсах есть raii. Если научиться его правильно готовить, то всё очень даже типтоп.

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

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

Дело не в памяти, а в большей вероятности допустить ошибку. К примеру тогда, когда исключение оставляет объект в противоречивом состоянии. В mission-critical проектах это важно, т.к. как правило никто не хочет искать дополнительных приключений на свою ж.

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

Чувак, большая часть людей говорит безальтернативно и уверенно только на ЛОРе. Я всего лишь наблюдал определенный выигрыш надежности от неиспользования исключений (т.е. с возвратом кода ошибки) и потому предпочел бы именно этот подход.

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

Программировать могут и программируют, причем очень много :)

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

Конечно, есть риск уйти совсем далеко от грешной земли. В этом смысле и си, и си++ гораздо приземленнее, но все же платформы со сборкой мусора давно уже зарекомендовали себя как вполне надежные инструменты. Вон, даже Apple по-немногу переходит на сборку мусора в своем obj-c. Так, она включается по умолчанию в новых проектах для Cocoa в среде XCode.

Тут есть такая аналогия с ассемблером. Были времена, когда нужно было писать очень много на ассемблере, чтобы получить быструю программу. Теперь уже не так. Вручную «оптимизированный» код на ассемблере сейчас может оказаться запросто медленнее, чем код, транслированный в ассемблер компилятором си++, и скорее всего, так оно и будет. Это уже общепризнанно, хотя некоторые узкие места до сих пор пишут на ассемблере, но на порядки реже.

Так вот, можно пойти дальше. Для некоторых задач уже язык си++ может оказаться тем «ассемблером», на котором написанный код с ручным управлением памятью вполне может оказаться медленнее кода, написанного на языке более высокого уровня. Такие задачи определенно есть, но эту тему развивать не буду - секрет :) И дело здесь уже становится не только в скорости разработки.

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

Вон, даже Apple по-немногу переходит на сборку мусора в своем obj-c.

Там нет gc, там банальный reference counting. Который, как раз таки, имеет абсолютно непредсказуемое поведение.

anonymous
()
Ответ на: комментарий от vromanov

Тут на ЛОРе не принято раскрывать свои мысли - заклюют. Гораздо проще писать обидные комментарии. Это что-то вроде местного развлечения.

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