![]() |
|
Модераторы: Daevaorn |
![]()
|
|
||
|
|
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
1. Подчёркиваю, вопрос про Си, а не про Си++
2. Для вариантоа "Си не нужен Си++ нужен" - каменты 3. Вариант "Си/Си++ ваще не нужен" ( specially for kamiisto:) ) - тоже в каменты Поясню, зачем срздал тему: много-много новичков начинают изучать Си. Такая программа в ВУЗах… Но IMHO чистый Си нужен *только* для ооооооооч. специфических компиляторов/платформ. Зачем же студиков мучают некрофилией ? Это сообщение отредактировал(а) borisbn - 1.7.2011, 08:39 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
отвечать тоже только в строгом соответсвии с алфавитом ? |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
> отвечать тоже только в строгом соответсвии с алфавитом ?
список удалил. он там не к месту был... Это сообщение отредактировал(а) borisbn - 1.7.2011, 08:40 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 1 Всего: 56 |
Таблицы кодировок не согласны с таким алфавитом На мой взгляд, писать на Си надо в очень узком круге задач, а вот изучать его надо всем программистам и не только его, но и ассемблер. Абстракции хороши для работы, но они имеют свойство протекать. Также как при использовании ORM необходимо хорошо знать SQL, так и при использовании высокоуровневых языков необходимо понимать во что они компилируются. Безусловно наблюдать за "программистами", которые не знают ничего кроме верхнего слоя абстракций забавно, но ровно до тех пор, пока они работают не в вашей команде... Как только они начинают работать над тем же проектом, что и вы, становится грустно... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
Си нужен для системного программирования и в тех случаях, где нет возможность использовать с++. хотя мне сложно такое представить... ибо даже модули ядра для *nix пишут на с++(xvr к примеру
с другой стороны, есть мнение, что на Си проще выражать мысли, ибо нет никаких премудростей с++. |
|||
|
||||
| maint |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 12.5.2008 Репутация: нет Всего: 2 |
в *ix модуль на плюсах ?. Сейчас глянул на исходники ядра линуха. Ни одного. Редкая птица переубедит Линуса, что может быть и с++ в ядре. А представить отказ от с++ я могу. Достаточно собрать в плюсах и чистом С
и увидеть размер. Так что, с точностью до наоборот. В системном прогаммировании плюсы надо использовать там, где нельзя быстро написать на С. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Подписываюсь... и про то как "грустно наблюдать программистов, которые знают только верхний слой абстракций"... Мне тоже Джоэль нравится На мой взгляд, учить программированию нужно примерно так: байты-биты, строки, указатели - в общем голый Си и ассемблер. И вот когда студенты уже окончательно одуреют от перспектив, сказать: можете расслабится, есть ООП и прочие Жавы - но помните: внутре там все та же хрень, которой вас мучили последние полгода! -------------------- ... |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
сделай ссылку из этого для потомков http://russian.joelonsoftware.com/Articles...stractions.html
До тире голосую двумя руками. После... Но ведь всё это можно учить и на Си++. Нет ? Вообще-то, я имел в виду не столько отсутствие ООП в Си, сколько его синтаксис. Например, в Си не работает хорошее правило - описывать переменные непосредственно перед использованием. Нет const'ов, ссылок и т.п. При переходе с Си на Си++ народ так и будет пользоваться Си-шным синтаксисом, не используя вкусности плюсов. Кста, у меня было именно так, и только с опытом пришло, что плюсы (синтаксис!!! не ООП) лучше. Это сообщение отредактировал(а) borisbn - 1.7.2011, 08:36 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Голосовал 'не нужен', но к сожалению все не так просто. Очевидно, что С нужен там, где нет С++. С другой стороны С++ требует более глубоких знаний о самом языке, чем С. Иначе получаются такие монстры, глядя на которые хочется застрелится
Использовать С для обучения, а потом С++ для работы - это прямой путь наплодить тех самых монстров Добавлено через 1 минуту и 11 секунд
В С99 уже работает |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
нельзя.. или точнее не совсем можно.. С "ложится" чисто на объектный код, С++ же добавляет кучу излишеств, к примеру манглинг для поддержания возможностей перегрузки, что приводит к зависимостям от компилятора.. Да, С++ это мощный инструмент, но не в коем случае не учебный.. И изучение понятий программирования на нем - это срез пути через холмы и овраги.. что очень вредно для неподготовленной психики, и в основном задерживает (не стойкого) изучающего у первого же препядствия, создавая видимость, что он уже во всю программит, хотя на самом деле в тени остались как сами механизмы С++, так и общеязыковые конструкции/понятия.. Более того нхоть С++ условносовместим с С, нельзя противопоставлять языки друг другу, у них совершено разные подходы и в общем случае они не взаимозаменяемые.. Си является "ассемблером" некоторого ряда осей, а значит пока будут эти системы нужен будет язык.. в отличии от С++.. Это сообщение отредактировал(а) mes - 1.7.2011, 08:49 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
немного подумав, выяснил чего именно_мне не хватает в Си - RAII
Добавлено @ 08:51 хотя, то ли в lcc, то ли в tcc(не помню в каком именно) есть поддержка RAII. Это сообщение отредактировал(а) boostcoder - 1.7.2011, 08:52 |
|||
|
||||
| maint |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 12.5.2008 Репутация: нет Всего: 2 |
boostcoder грит : "Нет const'ов, ссылок и т.п. "
Вот с этого места по подробней. Откуда сведения ? Просто, потому что не захотелось увидеть ? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
-------------------- undefined |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
maint, вообще-то это я грил
Ну, хорошо... До какого-то момента не было. Потом, может, и ввели, я просто бросил его изучать -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
про константы в Си можно почитать тут: http://forum.vingrad.ru/index.php?showtopi...t&p=2325528
про ссылки в Си я таки не слышал... |
|||
|
||||
| maint |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 12.5.2008 Репутация: нет Всего: 2 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
-------------------- undefined |
|||
|
||||
| maint |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 12.5.2008 Репутация: нет Всего: 2 |
ничего не стоит на месте. Если у Кернигана в синтаксисе не было, то не значит, что остановились на достигнутом. Хотя могу предположить еще, что брошено изучение до того как добрался до материала |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Действительно, C++ слишком сложен для обучения. С - компактней и проще. Честно сказать, за его развитием я не слежу (помню тот, что был во времена Кернигана & Ричи); надеюсь, его не сильно испортили нововведениями (простую логику языка)
Наверное, С++ нужно изучать даже не после С, а после чего-нибудь чисто объектного, наглухо закрывающего от программиста нижний уровень - чтобы сосредоточится именно на методологии. И вот программист освоил и нижний уровень, и высокоуровневый язык, который избавляет о многих хлопот, однако связывает ему руки своей абстрактностью и сильно навязывает определенные парадигмы. Если он сам почувствовал, что ему тесно в этих рамках, то он готов к С++. А если ему комфортно в рамках отделенного от битов языка, то ради бога. Есть ведь масса людей, кого раздражает, например, необходимость следить за памятью и т.д. (не надо про умные указатели, это в язык не встроено). -------------------- ... |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
в вакансиях с высокой з/п на язык типа: perl, ruby, python - часто требуется знание Си, почему-то.
есть еще Embedded Linux:
Это сообщение отредактировал(а) gcc - 1.7.2011, 14:37 |
|||
|
||||
| Сыроежка |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: нет Всего: 1 |
Во-первых, странно, почему у вас отсутствует вариант 4. Си нужен, С++ вообще не нужен? Во-вторых, у вас совершенно не соответсвуют действительности представления о том. что, якобы, С нужен для каких=то "специфических" компиляторов/платформ. Это лишь говорит о вашем небольшом практическом опыте. Я уж не буду ссылаться на UNIX подобный системы, где код Си занимает, если я не ошибаюсь, порядка 80% кода. Но Си очень активно используется на IBM mainframe, и даже под Windows. Как раз очень многие руководители очень крупных проектов категорически против использования С++ и делают выбор в пользу С. Это связано 1). со сложностью самого языка: 2) с очень высоким требованиям к квалификации программистов: 3) долгтй путь обучения самому С++ и вниканию в проект, написанный на С++; 3) трудности в поиске ошибок и отладки проектов. Есть вполне объективные цифры - это доля использования того или иного языка на рынке разработок. Насколько мне известно цифры показывают, что Си заметно опережает С++. |
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Сыроежка, в общем соглашусь, но с
нет. 1. Как обстаят дела в Си со стандартными алгоритмами для разных типов ? Приходится переписывать под каждый тип или уходить вообще от типизации к void*, что может привести к большим ошибкам. Особенно при рефакторинге. 2. Отсутствие деструкторов сильно засоряет код. Например требуется "склеить" два файла в третий. На Си довольно много лишнего получается:
24 строки и на Си++
11 строк да много всего ещё... сами ж наверняка не хуже меня знаете... Кста, на винграде в списке языков для подсветки (под кнопочкой Код) варианта для Си даже нет Это сообщение отредактировал(а) borisbn - 1.7.2011, 17:17 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| Сыроежка |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: нет Всего: 1 |
Если бы только этим ограничивались различия, то вопросов нет. Но, увы, я уже перечсислили серьезные недостатки С++. Разработка на С++ в разы дороже, чем на С! |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Или вот ещё пример из собственной практики. Захотели вы сделать систему расширяемой, чтобы можно было плагинами расширить функционал. Пишу я для вашей системы функцию на чистом Си. И как мне быть, если между вызовами мне нужно сохранить какое-то своё, специфическое, известное только мне, состояние ? Глобальные статические переменные не выход, т.к. если потребуется два экземпляра плагина будет каша. Я уж не говорю о многопоточности - если мою функцию будут вызывать из разных потоков, то о глобальных переменных нужно вообще забыть. Как эта проблема решается в Си++, думаю объяснять не стоит. Довольно просто - абстрактный интерфейс и какой угодно сложный класс наследника.
Добавлено через 11 минут и 27 секунд согласен. Для заказчика (или руководителя проекта) это минус. А для программистов плюс. Вернее ++ -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| sergioK1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
Тот кто не знает С никогда не станет хорошим програмистом, потому что это основы , последнее время часто сталкиваюсь со связкой Java+C , для обращения к железу или ОС c для удобства ренаймиться в срр, но не всегда требует знания всех тонкостей последнего , зная С освоить с++ не так сложно , ну будеть местами что нидь типа ненужного typedef - не критично |
|||
|
||||
| Сыроежка |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: нет Всего: 1 |
Совершенно с этим не согласен. Хороший вы программист или нет - это не связано с тем, на каком языке программирования вы работаете! И самое забавное, что скорей всего те, кто так утверждает, не знает языка С! Я знаю очень много людей, которые десятилетиями пишут на языке С, но при этом совершенно не знают языка С и являются плохими программистами! Вы хотите убедиться, что вы сами не знаете языка С? Я вам могу предоставить такую возможность. Только не надо бежать к своему компилятору и выяснять, что он вам выдаст. Попробуйте ответить без компилятора на простые вопросы, как например, этот 1) Чему равно значение логического (оператора равенства) выражения
2) Чему равен тип выражения x + y на машине, на который sizeof( int ) == sizeof( long )
Я вас уверяю, что большинство здесь присутствующих, вполне возможно и включая вас, которые бьют себя в грудь, что знают Си, не сомгут без использования компилятора ответить на такие два простых вопроса! Добавлено @ 18:18
Лично я совершенно не вижу никакого смысла тратить время на изучение Си для того, чтобы изучать С++! Лучше изучать С++ с чистого листа! Это сообщение отредактировал(а) Сыроежка - 1.7.2011, 18:21 |
||||||
|
|||||||
| maint |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 12.5.2008 Репутация: нет Всего: 2 |
класс File, скорей всего, выглядит как открытие файла с проверкой результата открытия. Таже песня реализовывается в 3 строки функцией чистого Си. Что то вроде
и использование
и не надо городить конструкторы-деструкторы. Размер скомпилированного кода будет меньше и памяти жрать меньше будет. Это сообщение отредактировал(а) maint - 1.7.2011, 18:25 |
||||||||||
|
|||||||||||
| maint |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 12.5.2008 Репутация: нет Всего: 2 |
уже код
говорит о амбициях, а не знании. unsigned по умолчанию не всегда unsigned int. Не во всех компиляторах. Иногда это unsigned char. |
|||
|
||||
| borisbn |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
maint, вы не поняли.
с первым файлом так можно сделать. А со вторым ? А с третьим ? Меня не отсутствие конструктора напрягает, а это:
собрался сначала ответить никуда не подглядывая, но потом, всё-таки не выдержал, залез в стандарт, и понял, что вроде как правильно думал. 1. 0x80 == '\x80' false, т.к.
'\x80' - при помещении его в char становится отрицательным потом, правда, увидел это
и засомневался... 2. unsigned, т.к.
Какую оценку ставите ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||||||
|
|||||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
уже не раз говорилось, не стоит программировать на С в стиле С++ .. я не знаток С, но Ваш код должен был выглядить как минимум так :
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
mes, но гоуту же
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| maint |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 12.5.2008 Репутация: нет Всего: 2 |
[/QUOTE] А деструктор не делает то же самое ? Как вы думаете. А вопрос, закрывать за собой дверь или это должна делать автоматика с поглощением ресурса, вопрос вкуса. Вообще, апологеты плюсов здесь собравшиеся, похоже из той когорты, которые для вычисления факториала и задачи о 8 ферзях,класс создают. И не ставящие не в грош ресурсы компа (память дешёвая, проц. поменяй). |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
нет. строго mpl-код. решать все в рантайме - привычка в основном новичков и сишников |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
именно по этому, все что можно решить в compile-time - решают в compile-time. но сишникам откуда это знать. зы это я все к тому, что не нужно так категорично говорить о том, чего вы не понимаете. и обвинять плюсовиков в том, что они чего-то там не экономят. Это сообщение отредактировал(а) boostcoder - 2.7.2011, 07:05 |
|||
|
||||
| maint |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 12.5.2008 Репутация: нет Всего: 2 |
это не обвинения, а факты. И человека, который программирует на обоих языках. А обвинения идут от людей, ничего кроме плюсов от мелкософт не знающиих |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
си нужен
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| sergioK1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
это слишком обшие слова , смотря какая задача, Borisbn, это не отвечает на твой вопрос? (для кпопки в Гуи С наверно не нужен, для обращения к железу наверно да), Это сообщение отредактировал(а) sergioK1 - 2.7.2011, 13:13 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
правильно написанная программа на С легко читается, модифицируется и отлаживается
с другой стороны три кита ООП, являющиеся частью синтаксиса С++, здорово ускоряют процесс разработки (именно ускоряют, ООП можно в С также использовать) мой идеал: С с поддержкой наследования, полиморфизма и инкапсуляции что-то типа Objective-C, но не с таким убогим синтаксисом при этом, чтобы изначальная простота языка пострадала не сильно эх, мечты, мечты... -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Если внимательно посмотришь на результаты опроса и почитаешь сообщения, то поймёшь, что никакого засилия плюсовиков тут нет и в помине. Скорее наоборот. По поводу ресурсов - на 99,(9) уверен, что нормальный компилятор в приведённом мной примере сгенерит абсолютно идентичный код. Можешь проверить. Думаю стОит пояснить: я создал тему вовсе не для того, чтобы поиздеваться над Си и теми, кто на нём пишет, а для того, чтобы разобраться, нужен ли он или нет. Причём на десктопе, а не вообще ! И если нужен, то зачем. Отдельное спасибо Сыроежке за подробные и понятные ответы. MAKCim, крткст сстр тлнт ? опоздал. писал, пока было только "си нужен" Это сообщение отредактировал(а) borisbn - 2.7.2011, 09:40 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот опять, кто то погрозил пальчиком, и теперь ни за что и не где goto не будет использовано, класс ! хотя я все таки предпочитаю понимать почему что-то плохо, а не слепо следовать чужим советам... вот без гото :
P.S. в примере с goto закралась ошибка, но на суть не влияет.. Добавлено через 2 минуты и 21 секунду полагаю Вы путаете "C в ООП стиле" и "C в C++ стиле".. Добавлено через 5 минут и 52 секунды
почему то тянет сказать : "по себе людей не судят" Добавлено через 9 минут и 42 секунды
с одним уточнением, в С++ не только эти три Кита, облегчают и ускоряют процесс.. Добавлено через 11 минут и 22 секунды чтоб не было нападок, вызванных последней фразой, также дополню : "да, С++ ужасен и монструозен и при всем этом в нем многого не хватает".. |
||||||
|
|||||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
чем больше "плюшек", тем больше костылей и возникающих сложностей в простоте сила -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
"сила в правде" (с) кто-то там.. Это сообщение отредактировал(а) boostcoder - 2.7.2011, 11:32 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
boostcoder,
не, сила в истине -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 1 Всего: 8 |
2. Для вариантоа "Си не нужен Си++ нужен" - каменты
pascal основной язык для начала обучения. Зачем, вообще, сложный Си вначале давать? А потом лучше в паре дать сразу C/С++. Иначе это долго всё слишком. А если обучение программированию короткое, какие-нибудь радиоэлекторнщики для программирования устройств, например. Им сразу разумно вбухать C/С++. Си - это достаточно специфическое, да и легко разбирается после C/С++. Встречается, конечно, в этих устройствах, но разобраться после C/С++ можно. |
|||
|
||||
| Dov |
|
||||||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
borisbn, пиши так:
и не напрягайся... -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
Dov, http://linux.die.net/man/3/fcloseall
|
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
В любом случае можно сделать так:
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: нет Всего: 15 |
Что уж тут говорить - даже разные версии builder с++ - как разные языки.
Вы тут задачки на знание решаете - поскажите, если не трудно http://forum.vingrad.ru/forum/topic-333328...y2370828/0.html |
|||
|
||||
| Сыроежка |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: нет Всего: 1 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не всегда, да "насильное" добавление плюшек приводит к костылям, но .. это не противоречит наличию плюшек в простом языке В С++ проблема в том, что плюшки являются костылями, что приводит к появлению таких "правил" : "Это так то так, но в этом случае, если еще вот это, то тогда по другому.. |
|||
|
||||
| Сыроежка |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: нет Всего: 1 |
Я вам ставлю "отлично" за вашу смелость! Это говорит, что вы - квалифицированный программист, стремитесь к познанию, а потому не боитесь показать свое незнание. Все остальные, насколько я понимаю, побоялись отвечать на эти вопросы. К сожалению у меня под рукой нет стандарта С, так как я общаюсь из интернет-кафе, поэтому вам придется поверить на слово, или самому повнимательней поискать нужные места в стандарте. Относительно первого вопроса. Во-первых, тип символьной константы является int. А это значит существует серьезное отличие С и С++. Так, например, sizeof( 'a' ) в С равно 4 (для 32-битовой платформы), тогда как в С++ 1. Будет ли константа знаковой или беззнаковой определяется тем, как ведет себя тип char данной реализации компилятора. Если тип char соответствует по поведению типу unsugned char, то значение выражения будет равно 1, так как символьная константа '\x80' будет положительным целым числом. Ежели тип char ведет себя как signed char , то данная константа будет отрицательным целым числом, а потому выражение будет равно 0. То есть правильный ответ для первого примера состоит в том, что значение выражения зависит от реализации компилятора, или, как пишут в стандарте, implementation defined. Нужно смотреть раздел, где описываются константы, в частности параграф, посвященный символьным константам. Обычно у компиляторов существует либо опция, либо #pragma команда, которая позволяет задать, как компилятор будет интерпретировать тип char: либо как unsigned char, либо как signed char. Так что вы можете проверить результат меняя данную опцию, и убедитесь, что в одном случае это выражение равно 1, а в другом 0. Что касается второго примера, то вы правильно сослались на integer promotion. Только в данном примере надо рассматривать не integer promotion, так как операнды уже имеют ранг, который выше ранга или равен рангу типу int, а надо рассматривать обычное (default или usual - сейчас не помню) преобразование типов. Этот параграф, если я его правильно назвал, как раз следует сразу же за параграфом integer promotion. Так как ранг типа long выше ранга типа unsigned int но в то же время long не может представить все значения типа unsigned int то выражение получает тип unsigned long. Вы это легко можете проверить в С++. Для этого достаточно написать простую шаблонную функцию
Это сообщение отредактировал(а) Сыроежка - 3.7.2011, 17:32 |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
integral conversion Добавлено через 1 минуту и 4 секунды
мне кажется остальные подумали, что индивидуальный вопрос, и решили не вмешиваться Это сообщение отредактировал(а) mes - 3.7.2011, 17:51 |
||||
|
|||||
| Сыроежка |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: нет Всего: 1 |
||||
|
||||
| Сыроежка |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: нет Всего: 1 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а Вы о usual arithmetic conversions.. только оно не противопоставляется integral promotion, а включает.. ну и arithmetic conversions - это не преобразование как таковое, а метод (не знаю какое слово подойдет лучше) выбора подходящего преобразования.. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |