Язык c — Помогите, не могу понять в чём проблема (Язык С)


Содержание

Язык программирования Си сложен в изучении?

Тошнит от pascal, около 2-ух месяцев изучаю на нем азы программирования. Хочу начать программировать на языке уровнем пониже. Из известных мне понравился си, но вот спросил у знакомого, а он сказал что си очень сложен. Особенно укаатели, говорил лучше изучать его 3-им или 4-ым по счету. Конечно я понимаю, что с моим багажом знаний я буду быдлокодить по крупному, но программирование мне нравится. Блин так ли он сложен как его знакомый малюет?

Проще только ассемблер.

Тебя скорее от программирования тошнит. Язык C здесь ничем не поможет.

От программирования нет, от паскаля да.

На каких языках ты еще программировал?

Что конкретно не нравится?

Что там сложного может быть — его 40 лет назад создали. Сам подумай.

Причина субъективна он приелся. Хочется чего-то нового!

Си и Паскаль практически идентичные языки, разница крайне незначительная.

Чистый C прост в изучении. Чуть-чуть проще, нежели Pascal.

В чем причина неприязни к паскалю? Он у вас до сих пор под DOS?

Переходи на lisp же. Там бездна нового.

как-то так, если правильно помню (давно забросил оба):

Синтаксис, конечно же, зависит от реализации языка.

Нет ну точно под DOS не сижу))) Просто надоел!

Без указателей ты и в Паскале не сможешь создать динамический массив или связанный список.

BTW Есть люди которые понимают этальные когомологии, осилили как-то.

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

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

Процедурщина не может быть сложной.

Я за бан, ибо линакс непричем.

Правильно, паскаль — какашка, он никогда не был предназначен для того, чтобы на нём реально программировали что-то серьёзное. Учи ц.

Если что указатели есть и в Паскале, да. Так что твой знакомый чего-то не знает, походу

ахаха :) бан школьнику, а корешу его, которому Сишечка третьим или четвертым языком, ковровая дорожка в биореактор. 2 месяца изучает и уже приелось. Если ты ничего толкового на Паскале написать/изучить не можешь, Сишка тебе не поможет. те же указатели если в паскале не понял, то и дальше ничего путного не выйдет. не смеши людей.

Гораздо труднее усвоить все нюансы применения. Но это приходит с опытом.

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

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

С — это просто засохший кал, порножурналы с небритыми тетками и пара незарегистрированных стволов наших Отцов. Изучай современные языки типа сишарпа, эфшарпа или кложуры.

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

Те, кто пугает сложностью нормальных языков и отсылает ко всяким Васикам, почему-то вбили себе в голову, будто ступенчатое возрастание сложности — вершина всего. Видимо, неверно обобщили свой школьный опыт. Арифметика идет впереди алгебры только потому, что арифметика — основа алгебры. А Basic — не основа Java, Java — не основа C++. Врачей-студентов не отправляют на первом курсе на мясокомбинат практиковаться в разделке туши. Изучающим русский не скармливают сначала болгарский.

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

В реальном мире Си часто преподают как первый, например, на Интуите, где курсы Java требуют сишного бэкграунда, иногда — как единственный (индустриальный техникум моего города). И вроде бы, эти подходы работают.

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

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

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

Язык программирования Си сложен в изучении?

В изучении прост, в использовании сложен.

Тошнит от pascal, около 2-ух месяцев изучаю на нем азы программирования.

Не может тошнить от Pascal за 2(два!) месяца изучения программирования на нём. Не может. Тебя тошнит либо от программирования вообще, либо от осознания собственного нубства. Pascal тут не при чём, как и C, впрочем, тоже. И если от сверстников ты, первое время, сможешь замаскировать языком C свои неудачи, то позже ты завязнешь в том самом менеджменте памяти и указателях (о которых тебя предупреждал друг) и потеряешь время, необходимое на изучение алгоритмов и прочей дискретной математики. Ты можешь научиться бороться с неудобствами языка программирования C, но так и не научиться программировать. Прикинь, бывает и так.

(Представляю, как вывернет тебя наизнанку, когда ты поймёшь, что твои программы нафиг никому не нужны и не интересны, кроме тебя самого, как на Pascal, так и на C. Впрочем, не совсем так, — вначале всем будет интересно, а потом, чем более глубже ты завязнешь в программировании, тем менее интересно будет окружающим с тобой разговаривать об этом. Так-то.)

Хочу начать программировать на языке уровнем пониже.

Хватит врать, пиши правду: «нуб, изучаю программирование на Pascal, хочу стать крутым и уважаемым!»

Так, вот, чтоб стать крутым и уважаемым (или богатым) нужно знать алгоритмы и уметь программировать. Ни Pascal, ни C тут не показатель. Кстати, если внимательно посмотришь на историю программирования, то можешь заметить, что многие «крутые» программы (или, даже, хорошо продаваемые операционные системы) были вначале написаны на Pascal (и лишь значительно позже были переписаны на другие ЯП).

Кстати, чтоб стать богатым, действительно, нужно знать алгоритмы и программирование. Потому, что бизнес — это и есть алгоритмы и программирование, только не на компьютере (алгоритм подсчёта прибыли, алгоритм заполнения декларации, алгоритм подготовки годовой отчётности, алгоритм предоставления отчётности в налоговые органы, и т.д.).

Короче, учи алгоритмы, <построение, анализ и доказательство алгоритмов>и программирование, а не «крутые» языки программирования, потому, что до ассемблера ты всё-равно не доберёшся (а остальные языки программирования — абстрактное рафинированное фуфло, с той или иной степенью абстракции).

Меня тоже тошнило от паскаля в школе. Все эти обязательные объявления переменных в окрестностях заголовка процедуры, бегин-енды и пр.

По сабжу — ЯП нужно учить под конкретный круг задач. Для первого ЯП С вполне подходит.

А вообще пора то ли тему прикрепить по поводу выбора ЯП, то ли отдельный форум сделать.

Правильно, паскаль — какашка, он никогда не был предназначен для того, чтобы на нём реально программировали что-то серьёзное. Учи ц.

Мальчик, ты — категоричный и необразованный дебил. По статистике, Паскаль — самый успешный язык программирования стартапов. Одна MS Windows чего только стоит.

Меня тоже тошнило от паскаля в школе. Все эти обязательные объявления переменных в окрестностях заголовка процедуры, бегин-енды и пр.

А теперь давай представим, как тебя тошнило бы от так горячо любимого и уважаемого тобой ассемблера? Ты же программист по сути — смоделируй ситуацию: ты в школе начинаешь изучать программирование с универсального ассемблера. Не тошнит?

(ты же не собираешься сейчас спорить об универсальности ассемблера?)

По сабжу — ЯП нужно учить под конкретный круг задач. Для первого ЯП С вполне подходит.

Он ещё с алгоритмами смутно знаком, а ты ему сразу выбор под нос суёшь. Это, знаешь ли, больше походит на подставу.

А вообще пора то ли тему прикрепить по поводу выбора ЯП, то ли отдельный форум сделать.

Нефиг отделяться. Пусть профи, типо тебя, помнят откуда они родом! :D

А теперь давай представим, как тебя тошнило бы от так горячо любимого и уважаемого тобой ассемблера?

Ты меня с кем то перепутал, в жизни ни строки не написал на асме.

(ты же не собираешься сейчас спорить об универсальности ассемблера?)

Что есть универсальность?;-)

ты ему сразу выбор под нос суёшь

Да! Добро пожаловать в большой мир;-)

Пусть профи, типо тебя, помнят откуда они родом! :D

Я вообще c программируемого калькулятора начинал;-)

Дай догадаюсь, в паскале тебе не нравятся begin и end?

Хочу начать программировать на языке уровнем пониже.

У тебя наверное какое-то своё определение слова «уровень».

Ты меня с кем то перепутал, в жизни ни строки не написал на асме.

Т.е. ты не связан с числодробилками и никогда не советовал смотреть gcc -S в случае чего?

Началось. Вот этого я и боялся.

Странный у тебя мир — подстава на подставе. А если бы ему LISP больше подошёл, а ты ему C разрекламировал и впарил?

Я вообще c программируемого калькулятора начинал;-)

Т.е. ты не связан с числодробилками и никогда не советовал смотреть gcc -S в случае чего?

Связан, советовал, но асма не знаю. Выхлоп там и так понятен.

А если бы ему LISP больше подошёл, а ты ему C разрекламировал и впарил?

Си лишпу не помеха! Все равно лишперы фрагменты С-шного кода регулярно юзают.

БЗ-32. Когда отец принес на ночь MK-64 я смог сделать 2D посадку на луну;-)

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

А ещё есть диалекты типа SmallC, TinyC, но они вообще на любителя, типа меня.

Блин, напомни, что это? В голове вертится, вспомнить не могу, противно.

Си лишпу не помеха! Все равно лишперы фрагменты С-шного кода регулярно юзают.

А всё потому, что в мире Unix/Linux язык программирования C — практически, как ассемблер. И, например, возня с низкоуровневым менеджментом памяти способна убить всё удовольствие от изучения более-менее сложных алгоритмов и программирования вообще.

БЗ-32. Когда отец принес на ночь MK-64 я смог сделать 2D посадку на луну;-)

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

Когда отец принес на ночь MK-64 я смог сделать 2D посадку на луну;-)

Men’s Health. Журнал

Анна Смитиенко, врач-терапевт многопрофильной клиники «МедикСити», кандидат медицинских наук

Цукерберг рекомендует:  PHP библиотека для извлечения цветов

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

В норме язык должен быть симметричным, ровным, влажным, бледно-розового цвета, должен быть покрыт прозрачным налетом. У тебя такой же? Тогда можешь не читать дальше — с тобой все в порядке. Однако стоит насторожиться, если:

1. Твой язык покрыт налетом

Возможные неполадки в организме: болезни желудочно-кишечного тракта, печени и желчного пузыря

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

2. На твоем языке творожистый «осадок»

Возможные неполадки в организме: кандидоз ротоглотки

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

3. Твой язык яркого малинового цвета

Возможные неполадки в организме: анемия

Цвет твоего языка чрезмерно яркий, с малиновым оттенком? При подробном рассмотрении заметно следующее: некоторые сосочки атрофировались (попросту пропали), что вместе с сохранными сосочками формирует своеобразную неровность поверхности языка — так называемый «географический язык»? Это косвенные признаки анемии. Не исключено, что твоему организму не хватает жизненно важного витамина B12 или, например, фолиевой кислоты, которая налаживает кровоток в твоем теле и заметно снижает риск возникновения инфаркта. Проконсультируйся с терапевтом или гематологом.

4. Твой язык ассиметричен

Возможные неполадки в организме: инсульт

При ряде острых нарушений мозгового кровообращения высунутый язык отклоняется в какую-либо сторону от срединной линии. Как правило, это сопровождается смазанностью речи или другими ее нарушениями, а также потерей или ограничением подвижности в руке и/или ноге. Важно помнить, что небольшое отклонение языка от средней линии (девиация) встречается и у некоторых абсолютно здоровых людей — это их особенность с рождения. Однако если с тобой или с твоими близкими раньше ничего подобного не случалось, незамедлительно вызывай скорую.

5. Твой язык увеличился в размерах

Возможные неполадки в организме: амилоидоз

При этом редком заболевании язык становится настолько большим, что даже может затруднять жевание или глотание. По краям языка в таком случае нередко заметны отпечатки зубов. Впрочем, поражение языка при амилоидозе — болезни, обусловленной избыточным отложением в органах патологического белка амилоида, — имеет второстепенное значение. Гораздо страшнее то, что амилоидоз поражает внутренние органы — почки, кишечник, печень или сердце. Заметил нечто подобное — незамедлительно проконсультируйся со специалистом.

Важность C при обучении программированию

Введение

Программирование — процесс создания разработчиком софта, который бы запускался на компьютере и решал конечное количество проблем. Люди занимались программированием с тех пор, как были изобретены компьютеры. Сначала это делалось с помощью вакуумных трубок, а после изобретения транзисторов — с помощью бинарных кодов. Первые низкоуровневые языки программирования появились одновременно с Colossus — первым программируемым компьютером.

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

OС и программирование

Сначала все компьютеры были одинаковыми и использовали одинаковую архитектуру, но со временем появилась необходимость в операционной системе, которая бы взяла на себя управление базовыми операциями над «железом» компьютеров. Так появились несколько ОС. Деннис Ритчи был человеком, который переписал одну из них — Unix — с ассемблера на С. Для того, чтобы «обучать» операционные системы, необходим был язык программирования, который говорил бы им, что делать. Таким образом, программирование — это процесс создания набора команд, которые говорят, какие операции должна исполнять ОС.

C — низкоуровневый язык программирования, который поддерживает прямое управление «железом». Он был разработан Деннисом Ритчи в 1973-ем году в AT&T Labs. С помощью этого языка вы можете с легкостью управлять памятью, процессором, регистрами и даже подключенными устройствами! Ассемблер также был одним из первых языков низкоуровнего программирования, изобретенных после бинарных кодов, но он был менее понятен человеку, чем C.

Язык C также известен как отец современного программирования. Хоть кроме него и существовали языки вроде BASIC, С имел гораздо больше преимуществ, чем его конкуренты.

1 июля – 3 декабря, онлайн, беcплатно

С — язык общего назначения. В нем нет классов, нет интерфейсов. Зато в нем есть гораздо более полезные и мощные инструменты — например, указатели и многие другие, позволющие манипулировать памятью прямо во время исполнения программы. Также С использовался как «строительный материал» для других, более высокоуровневых языков: Java, D, C#. C++ и Objective-C после компиляции превращаются в код на C, который затем компилируется в машинный код ради более быстрого исполнения.

Почему больше не пишут хорошего софта?

Новое поколение разработчиков занято привлечением внимания аудитории, а особенно девушек, а не своей основной задачей — построением лучшего цифрового мира. Я видел слишком много вопросов вроде «Почему я получаю ошибку null ?». Серьезно? Человек, задавший такой вопрос, не понимает самой сути программирования, не желает самостоятельно разобраться в проблеме. Он всего лишь услышал где-то, что Билл Гейтс — самый богатый человек на земле, и решил, что он может стать таким же. Все, что ему нужно — это всего лишь создавать софт, и скоро он будет миллиардером! Такой менталитет современных программистов не позволяет им создавать хорошие программы.

Зачем учить С?

Навык программирования на С очень важен, и С должен преподаваться в университетах вместо С++. Пусть С++ и поддерживает ООП, С — это тот язык, который должны знать 90% программистов. 10% могут полагаться на С++ или любой иной высокоуровневый ЯП. За свою программистскую карьеру я учил C#, Java, Visual Basic, ASP.NET и многие другие высокоуровневые языки, и всегда были люди, которые жаловались на их скорость. Знаете, что им всегда отвечали? Учите С или С++, так как они компилируются в машинный код, а значит, выполняются с крайне большой скоростью!

Проблемы на уровне университета

В университете, где я учусь, преподают только С++ и только на бумаге. По мне, так учить программированию без практики — это значит убить саму концепцию программирования. И хотя в моем университете это происходит из-за недостатка хороших кадров, новые программисты ВСЕГДА должны быть обучены навыкам программирования. Помню себя во времена изучения мною HTML — код ASP.NET для меня тогда выглядел ужасно запутанно.

Побочные эффекты незнания низкоуровневых ЯП

Большинство встраиваемых устройств и микроконтроллеров требуют понимания низкоуровневого программирования и его концепций: управления памятью, указателей и многих других. Современный разработчик (который пишет только приложения на .NET и для Android) никогда не сможет программировать такие устройства. Кроме того, существует такая штука, как Интернет Вещей. И хотя она может программироваться на .NET, но сами соединенные устройства должны использовать низкоуровневый язык для получения лучшего результата.

Отсутствие поддержки

Для низкоуровневых языков вроде ассемблера или С нет нормальной поддержки. Visual Studio (лучшая IDE, по моему мнению) не поддерживает проекты на ассемблере (хотя MASM все же присутствует). Из-за этого недоразумения большинство крупных колледжей не учат студентов низкоуровневым языкам, которые объясняют концепцию программирования на самом деле. Это убивает любое желание ученика лучше понять архитектуру компьютера и писать софт под нее, вместо этого они пишут приложения для себя, а не для публичного использования.

Сделай или Сдохни; С или Слепота

Студенты должны понять разницу между высокоуровневым и низкоуровневым программированием, и их мозги должны быть настроены таким образом, чтобы всегда предпочитать низкий уровень высокому, что, в свою очередь, приведет к тому, что их программы будут более простыми и эффективными, чем написанные на высокоуровневых языках. Программист всегда должен предпочитать эффективный, но более сложный путь легкому, но неэффективному. Фреймворк, на котором написано приложение, в любой момент может стать неактуальным или что-то в этом роде, в то время как софт, написанный на низкоуровневом языке, никогда не устареет. Таким образом обеспечивается не только эффективность приложения, но и его качество.

Изучение С онлайн

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

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

Как включить русский язык в Си

На начальных этапах программирования многие новички сталкиваются с такой проблемой: они в коде пишут какое-либо сообщение на русском языке для консоли (например, используя printf), но при запуске программы вместо русских слов появляются какие-то непонятные знаки. Покажем, как избавиться от этой проблемы.

Например, при запуске вот этой программы:

В консоли будет отображено следующее:

Всё дело в том, что мы не подключили русскую локализацию.

Исправить эту ошибку очень легко!

Для начала надо добавить следующую библиотеку:

Она отвечает за локализацию.

А затем нам надо просто написать в начале тела кода вот эту строку:

Функция setlocale задаёт локализацию программы. По умолчанию это только английский язык.
LC_ALL указывает программе, что локализированы будут все функции.

“Rus”, как легко догадаться говорит о том, что локализация произойдёт на русский язык.

Вот и всё! Мы включили русский язык в Си. Наша программа модернизирована и обогащена на две строки. Теперь она будет выглядеть вот так:

А консоль вот так:

Поделиться в соц. сетях:

14 комментария(ев) к статье “ Как включить русский язык в Си ”

Что именно? Какая ошибка?

Можете попробовать такой код:

#include
#include
#include

int main()
<
setlocale(LC_ALL, “Rus”);
printf(“Всем привет! Как дела?”);
getch(); //В Visual Studio _getch();
return 0;
>

Этот вариант работает, но он не включает русский язык в стандартном потоке ошибок.

Вместо одних каракулей появились другие. Но никаких ошибок не выдает.

Здравствуйте, Евгений. Существует ещё один способ включения русского языка в Си. Попробуйте использовать следующий код:

#include
#include
#include

int main()
<
SetConsoleCP(1251); //установка кодовой страницы win-cp 1251 в поток ввода
SetConsoleOutputCP(1251); //установка кодовой страницы win-cp 1251 в поток вывода
printf(“Всем привет! Как дела?”);
_getch();
return 0;
>

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

Здравствуйте! Чуть выше в комментариях приводятся ещё два способа, как включить русский язык в Си. Попробуйте их, должно сработать.

У меня та же проблема, с printf всё работает, но вот если ввести при scanf, то в выводе printf будут кракозябры

Попробуйте способы, указанные в комментариях выше. Один из них точно сработает.

Спасибо за инфу! Все работает.

Всё работает! Спасибо большое!

Правильно “Ru”, а не “Rus”.
setlocale(LC_ALL, “Ru”);

у меня получилось так:

#include
#include
#include

void main()
<
setlocale(LC_ALL, “Rus”);
wprintf(L”Спасибо”);
>

Если кто-то пишет в NotePad++ или чём-то подобном, не забудьте поменять кодировку самого файла с UTF-8 на, например, Windows-1251.
Спасибо за статью.

Проблема с языком

Похожие и рекомендуемые вопросы

23 ответа

Спасибо за ответ.
Я ходила к гастроэнтерологу, которая сказала ой не надо ничего глатать(ФНДС), у тебя просто нехватка витамина В12, я сдала анализ а у меня даже его больше нормы (норма до 800 ед.,а у меня 1400 ед.).
Сдавала на грибки, не выявлено.
Делала цитологию с поверхности языка, вот результат:
В полученном материале обильная смешанная флора, лейкоциты, клетки многослойного плоского эпителия с выраженными реактивными изменениями, встречаются безъядерные клетки.

Цукерберг рекомендует:  Выдвигающееся сверху меню с 3D-эффектом

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

Простите, что такая зануда, но с появлением ребенка, мировоззрение меняется.)

Алексей Александрович, я сдавала на грибки, результат отрицательный.

Нарост на корне языка, чем может быть (вызывает дискомфортное ощущение)

Алексей Александрович, ещё пару вопросов МРТ ротовой полости с контрастом(язык, дно ротовой полости), информативно при диагностике онкологии языка, или нет? Или КТ лучше?

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

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

Очень переживаю, потому что маленькая дочка, боюсь.

Бугорки сверху это сосочки, это норма. А по бокам у меня оказался папилломатоз, сдавала биопсию.

Почту позже напишу, сейчас нет времени

Поиск по сайту

Что делать, если у меня похожий, но другой вопрос?

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

Медпортал 03online.com осуществляет медконсультации в режиме переписки с врачами на сайте. Здесь вы получаете ответы от реальных практикующих специалистов в своей области. В настоящий момент на сайте можно получить консультацию по 48 направлениям: аллерголога , анестезиолога-реаниматолога , венеролога , гастроэнтеролога , гематолога , генетика , гинеколога , гомеопата , дерматолога , детского гинеколога , детского невролога , детского уролога , детского хирурга , детского эндокринолога , диетолога , иммунолога , инфекциониста , кардиолога , косметолога , логопеда , лора , маммолога , медицинского юриста , нарколога , невропатолога , нейрохирурга , нефролога , онколога , онкоуролога , ортопеда-травматолога , офтальмолога , педиатра , пластического хирурга , проктолога , психиатра , психолога , пульмонолога , ревматолога , рентгенолога , сексолога-андролога , стоматолога , уролога , фармацевта , фитотерапевта , флеболога , хирурга , эндокринолога .

Мы отвечаем на 97% вопросов.

И всё же C — низкоуровневый язык

За прошедшие с момента появления языка C десятилетия было создано множество интереснейших языков программирования. Какие-то из них используются до сих пор, другие — повлияли на следующие поколения языков, популярность третьих тихо сошла на нет. Между тем архаичный, противоречивый, примитивный, сделанный в худших традициях своего поколения языков C (и его наследники) живее всех живых.

Критика C — классический для нашей индустрии эпистолярный жанр. Она звучит то громче, то тише, но в последнее время буквально оглушает. Пример — перевод статьи Дэвида Чизнэлла «C — не низкоуровневый язык», опубликованный в нашем блоге некоторое время назад. Про C можно говорить разное, в дизайне языка действительно много неприятных ошибок, но отказывать C в «низкоуровневости» — это уже слишком!

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

Содержание

Аргументы критиков C

Вот некоторые аргументы критиков С, перечисленные в том числе и в статье Дэвида Чизнэлла:

  1. Абстрактная машина языка C слишком похожа на устаревшую архитектуру PDP-11, которая давно уже не соответствует устройству популярных современных процессоров.
  2. Несоответствие абстрактной машины C устройству реальных машин усложняет разработку оптимизирующих компиляторов языка.
  3. Неполнота и сложность стандарта языка ведут к разночтениям в реализациях стандарта.
  4. Доминирование C-подобных языков не позволяет исследовать альтернативные архитектуры процессоров.

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

Язык программирования низкого уровня

Общепризнанного определения языка низкого уровня не существует. Но перед обсуждением спорных моментов желательно иметь хоть какие-то исходные требования к предмету спора.

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

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

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

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

Заметьте, что для такого языка не так важны высокоуровневые абстракции, — для него важнее служить контрактом между платформой, компилятором и разработчиком. А если есть контракт, то возникает необходимость в независимом от конкретной реализации стандарте языке.

Наше первое требование — общие для целевых платформ черты — выражается в абстрактной машине языка, поэтому с неё мы и начнём обсуждение C.

Дело не только в PDP-11

Платформа, на которой появился язык C, — PDP-11. В её основе лежит традиционная архитектура фон Неймана, в которой программы выполняются последовательно центральным процессором, а память представляет собой плоскую ленту, где хранятся и данные, и сами программы. Такая архитектура легко реализуется в железе, и со временем все компьютеры общего назначения стали использовать именно её.

Современные усовершенствования архитектуры фон Неймана направлены на устранение её главного узкого места — задержек при обмене данными между процессором и памятью (англ. von Neuman bottleneck). Разница в производительности памяти и центрального процессора привела к появлению кеширующих подсистем процессоров (одноуровневых и позже — многоуровневых).

Но даже кешей в наши дни уже недостаточно. Современные процессоры стали суперскалярными (англ. superscalar). Задержки при получении инструкциями данных из памяти частично компенсируются внеочередным выполнением (англ. instruction-level parallelism) инструкций вкупе с предсказателем ветвлений (англ. branch predictor).

Последовательная абстрактная машина C (и многих других языков) имитирует работу не столько конкретно PDP-11, сколько любых компьютеров, устроенных по принципу архитектуры фон Неймана. К нему относятся архитектуры, построенные вокруг процессоров с единственным ядром: настольные и серверные x86, мобильные ARM, сходящие со сцены Sun/Oracle SPARC и IBM POWER.

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

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

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

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

Стандартизированное и переносимое воплощение архитектуры фон Неймана — абстрактная машина C — удобно реализуется на всех основных платформах и поэтому пользуется своей популярностью как портативного ассемблера вполне заслуженно.

Оптимизирующие компиляторы и язык низкого уровня

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

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

Действительно, более декларативный подход позволил бы компилятору самостоятельно решать проблемы выравнивания данных в памяти или оптимального порядка полей в структурах; а высокоуровневые циклы дают свободу, необходимую при векторизации.

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

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

Интересно, что Чизнэлл в статье под названием «C — не низкоуровневый язык» парадоксально утверждает, что C — слишком низкоуровневый, указывая на отсутствие в нём высокоуровневых инструментов. Но практикам бывают нужны именно низкоуровневые инструменты, иначе язык не получится использовать для разработки операционных систем и других низкоуровневых программ, то есть он не будет удовлетворять второму из наших требований.

Отвлекаясь от описания проблем оптимизации именно C, хочу заметить, что в настоящий момент в оптимизирующие компиляторы высокоуровневых языков (тех же C# и Java) вложено не меньше усилий, чем в GCC или Clang. У функциональных языков тоже хватает эффективных компиляторов: MLTon, OCaml и другие. Но разработчики того же OCaml пока могут похвастаться производительностью в лучшем случае в половину скорости кода на C…

Стандарт как безусловное благо

Чизнэлл приводит в своей статье ссылку на результаты опроса, проведённого в 2015 году: многие программисты допускали ошибки в решении задач на понимание стандартов C.

Полагаю, что кто-то из читателей имел дело со стандартом C. У меня версия C99 есть в бумажном виде, страниц эдак на 900. Это не лаконичная спецификация Scheme объёмом меньше 100 страниц и не вылизанный Standard ML, состоящий из 300. Удовольствие от работы со стандартом C не получает никто: ни разработчики компиляторов, ни разработчики документа, ни программисты.

Но надо понимать, что стандарт C разрабатывался постфактум, уже после появления множества «почти-еле-только местами» совместимых диалектов. Авторы ANSI C проделали огромную работу, обобщив существующие реализации и прикрыв бесчисленными «костылями» неортогональности в дизайне языка.

Может показаться странным, что такой документ вообще кто-то взялся реализовывать. Но C был реализован множеством компиляторов. Я не буду пересказывать чужие байки о зоопарке мира UNIX конца 80-х, тем более что сам в то время считал не слишком уверенно и только до пяти. Но, очевидно, стандарт был всем в индустрии действительно нужен.

Прекрасно то, что он есть и реализован по меньшей мере тремя крупными компиляторами и множеством компиляторов поменьше, в совокупности поддерживающими сотни платформ. Ни один из языков — конкурентов C, претендующих на корону короля языков низкого уровня, не может похвастаться таким многообразием и универсальностью.

На самом деле современный стандарт C не так уж и плох. Более-менее опытный программист способен разработать неоптимизирующий компилятор C в разумные сроки, что подтверждается существованием множества полулюбительских реализаций (тех же TCC, LCC и 8cc).

Наличие общепринятого стандарта означает, что C удовлетворяет последнему из наших требований к языку низкого уровня: этот язык строится от спецификации, а не конкретной реализации.

Альтернативные архитектуры — удел специальных вычислений

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

Цукерберг рекомендует:  Удобная загрузка кода из внешнего файла

Действительно, существует множество альтернатив традиционному подходу с последовательным исполнением программ: модели SIMD в стиле GPU, модели в стиле абстрактной машины Erlang и другие. Но каждый из этих подходов имеет ограниченную применимость при использовании в центральном процессоре.

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

Erlang прекрасно работает в кластере, но эффективную quick sort или быструю хеш-таблицу на нём сделать трудно. Модель независимых акторов лучше использовать на более высоком уровне, в большом кластере, где каждый узел — всё та же высокопроизводительная машина с традиционным процессором.

Между тем, современные x86-совместимые процессоры давно уже включают в себя наборы векторных инструкций, схожие с GPU по назначению и принципам работы, но сохраняющие общую схему процессора в стиле фон Неймана в целом. Не сомневаюсь, что любые достаточно общие подходы к вычислениям будут включены в популярные процессоры.

Есть такое авторитетное мнение: будущее за специализированными программируемыми ускорителями. Под такие неординарные железки действительно имеет смысл разрабатывать языки с особой семантикой. Но компьютер общего назначения был и остаётся похожим на ту самую PDP-11, для которой так хорошо подходят C-подобные императивные языки.

С будет жить

В статье Чизнэлла есть фундаментальное противоречие. Он пишет, что для обеспечения скорости программ на C процессоры имитируют абстрактную машину C (и давно забытую PDP-11), после чего указывает на ограниченность такой машины. Но я не понимаю, почему это означает, что «C — не низкоуровневый язык».

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

Несмотря на доступность множества специализированных процессоров вроде GPU и TPU, в настоящий момент архитектура фон Неймана правит бал и индустрии нужен язык, позволяющий в рамках популярнейшей архитектуры работать на как можно более низком уровне. Достаточно простой, портированный на десятки платформ и стандартизированный язык программирования — это C (и его ближайшие родственники).

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

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

Почему Линус не любит C++?

В виду недавнего топика про «Ц с классами», в комментариях была ссылка на письмо Линукса, где он отвечал на вопрос «Git на C++» и грубо критиковал C++.

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

Что по кроссплатформенности — точно не скажу, программы на С++ требуют дополнительную libstdc++. Но, кажется, это не проблема.

Так почему ярые фанаты С так не любят С++?

  • Вопрос задан более трёх лет назад
  • 17025 просмотров

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

Если начинать «от сотворения мира»:

1) Как известно C++ был был придуман Страуструпом, мы не будем умалять его «ученные регалии» (ученных-то наград куча, но они по сути единственное чего «добился человек», кстати, 90% прямо или косвенно за c++). Однако, заметим, что Страуструп — как раз есть пример «чистого теоретика» (в отличии от «практика»-Торвальдса), т.е. является человеком за свою жизнь не принимавшим участия в разработке ни одного серьезного реального программного проекта. По сути компилятор c++ — единственное более-менее практическое дело в его жизни. Соотвественно о том с какими проблемами приходится сталкиваться в реальном «software development-е» с «высоты его ООП-теорий» он имеет весьма посредственное представление.

2) Как верно заметили, в упомянутой статье, изначально это был как раз «Це с классами», т.е. изначально НЕ БОЛЕЕ ЧЕМ «академическая» попытка навернуть на C отдельные элементы «обьектности» (типа, Smalltalk обьектный, а давайте попробуем сделать такое на более низком уровне). Кстати, могу Вам сказать, что с C++ я впервые познакомился в 80-90е годы, когда языком «ученной среды» был Фортран, языком «системщиков» Си, а для обучения «всех непрофильных специальностей» основам программирования использовались Basic и Pascal. Да, но правда «тогдашний C++ 80» отличался от нынешнего — он реально производил впечатление «просто прикольной поделки» (на память помню, что например, тогда не было и половины привычного функционала например таких вещей как всяких «reinterpret_cast-ов» или namespac-ов.). Кстати, да… барабанная дробь… НЕ БЫЛО STL.

3) Наверное Страуструповский «Це с классами», наверное так бы и остался в списке «прикольных поделок» в аналах истории, если бы не одно обстоятельство: «ВНЕЗАПНО» произошел «софтверный бум», соотвественно: a) «элитных» «олдскульных» программистов стало резко не хватать b) «требования к качеству софта» резко упали c) понадобилось средство для генерации достаточно низкоуровневого «говнокода в промышленных масштабах». И как ни странно, (ага, угадали, именно с появлением в C++ STL-я) C++ так и не избавившись от своих «академических болячек» был брошен в пучину «мейнстрима».

4) Вам говорят истинную правду, когда говорят, что «C++» это маркетинговое название для «Це с классами». Да, это так. И можно сказать, к великому сожалению, он нашел свою рыночную нишу. (Сейчас любой дурак может легко «освоить C++ за 21 день (с бустом и стлем)», при этом не умея даже внятно ответить на простой вопрос «Если ты такой умный, обьясни тогда почему, c$k@, у тебя программа течет по памяти и падает», (про такие «неполиткорректные вопросы», как «зачем писать 100 строк на то, что пишется в две-три», мы вообще тактично молчим, а то, мало ли, может у человека «сдельная зарплата» за количество строк ;) ), зато с видом крутого Беара Грилса можно обсуждать такие «высокие материи» как «Паттерны» и «чистый ООП»).

5) И к самому большему сожалению, в некоторых случаях альтернативы нет. Да, Я еще не встречал ни одного программиста, который в действительно реальной разработке софта активно использовал бы C++ и при этом от него бы не плевался. У C++ есть «Огромный ПЛЮС» — Его Мультипарадигменность! По-сути это его единственный плюс, позволяющий «не уйти в дебри» (типа попыток запихнуть «main()» в обьект только ради «идеи чистого ООП»)!

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

Проблема с языком

Врач-терапевт с 2006 года. Гастроэнтеролог.

Участник конференций по общей терапии, гастроэнтерологии, терапии боли и восстановительным методикам, диетотерапии. Участник XIX Ежегодного образовательного курса «Внутренние болезни: обзор и новые достижения» (Columbia University Medical Center (Нью-Йорк, США).

Сфера профессиональных интересов: ОРВИ, острые вирусные и бактериальные инфекции верхних дыхательных путей (в том числе у беременных женщин), заболевания ЖКТ, диетотерапия, восстановительная медицина, ревматологические заболевания.

Телефон для записи: +7 (499) 322-30-03 (клиника «Натали-мед» в Строгино).

Men’s Health. Журнал

Анна Смитиенко, врач-терапевт многопрофильной клиники «МедикСити», кандидат медицинских наук

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

В норме язык должен быть симметричным, ровным, влажным, бледно-розового цвета, должен быть покрыт прозрачным налетом. У тебя такой же? Тогда можешь не читать дальше — с тобой все в порядке. Однако стоит насторожиться, если:

1. Твой язык покрыт налетом

Возможные неполадки в организме: болезни желудочно-кишечного тракта, печени и желчного пузыря

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

2. На твоем языке творожистый «осадок»

Возможные неполадки в организме: кандидоз ротоглотки

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

3. Твой язык яркого малинового цвета

Возможные неполадки в организме: анемия

Цвет твоего языка чрезмерно яркий, с малиновым оттенком? При подробном рассмотрении заметно следующее: некоторые сосочки атрофировались (попросту пропали), что вместе с сохранными сосочками формирует своеобразную неровность поверхности языка — так называемый «географический язык»? Это косвенные признаки анемии. Не исключено, что твоему организму не хватает жизненно важного витамина B12 или, например, фолиевой кислоты, которая налаживает кровоток в твоем теле и заметно снижает риск возникновения инфаркта. Проконсультируйся с терапевтом или гематологом.

4. Твой язык ассиметричен

Возможные неполадки в организме: инсульт

При ряде острых нарушений мозгового кровообращения высунутый язык отклоняется в какую-либо сторону от срединной линии. Как правило, это сопровождается смазанностью речи или другими ее нарушениями, а также потерей или ограничением подвижности в руке и/или ноге. Важно помнить, что небольшое отклонение языка от средней линии (девиация) встречается и у некоторых абсолютно здоровых людей — это их особенность с рождения. Однако если с тобой или с твоими близкими раньше ничего подобного не случалось, незамедлительно вызывай скорую.

5. Твой язык увеличился в размерах

Возможные неполадки в организме: амилоидоз

При этом редком заболевании язык становится настолько большим, что даже может затруднять жевание или глотание. По краям языка в таком случае нередко заметны отпечатки зубов. Впрочем, поражение языка при амилоидозе — болезни, обусловленной избыточным отложением в органах патологического белка амилоида, — имеет второстепенное значение. Гораздо страшнее то, что амилоидоз поражает внутренние органы — почки, кишечник, печень или сердце. Заметил нечто подобное — незамедлительно проконсультируйся со специалистом.

Русские символы(буквы) при вводе/выводе в консоль на C++

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

Возникла проблема с отображением русских букв

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

На языке C++ программирую под ОС Linux, использую компилятор GCC. С проблемой неправильного отображения русских букв я не сталкивался. В момент написания статьи я нахожусь далеко от своего компьютера, могу довольствоваться лишь скромненьким ноутбуком с установленной ОС Windows Seven. Захотелось покодить и я установил на него интегрированную среду разработки Dev-C++ 5.10(использует компилятор TDM-GCC 4.8.1 на базе GCC 4.8.1). Кстати, она уже официально не поддерживается, но существует форк Orwell Dev-C++, который обновляется по сей день. Установив, я запустил и для пробы написал простую программку, которая отображает текст «Привет, мир!». Но поздороваться она с миром так и не смогла, а лишь сказала что-то непонятное на древнеегипетском. После перелопачивания некоторых форумов и сайтов я нашел множество советов, но основная масса не способна была решить её полностью, образовывались подводные камни о которых расскажу далее.

После написания, компиляции и запуска такой программы:

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих