ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    С / C ++
         

     

    Інформатика, програмування

    С/C + +

    "Ох хвиля моя, хвиля, ти як С + + потужна"

    Майже Пушкін

    Відносно потужності C/С + +. Так, дійсно це дуже потужні мови, але їх потужність полягає в їх засобах низького рівня, а вони при розробці прикладних програм часто непридатні.

    Потужність - це, звичайно, добре, але часто небезпечно.

    Приклад: # define int long синтаксично вірно, але може призвести до катастрафіческім наслідків (хоча, наприклад, при перенесенні програм з однієї платформи на іншу це може знадобитися). Або оператор goto. Те, що він не включений в Java, багато хто вважає дуже великим благом. Goto - це потужна можливість, але, як показав ще у сімдесятих роках Дейкстра, м'яко кажучи, "не рекомендована" до використання. Проте це можливість, і вона може бути не зайвою. Я вважаю, що подібні низькорівневі конструкції повинні бути присутнім, але ними не слід зловживати. У тих рідкісних випадках, коли особисто я його використовував, це була спроба розвитку плохоспроектірованной програми.

    "Щоб зробити кар'єру програміста за кордоном потрібно знати дві мови: англійська і C + + "

    Російський аспірант, який побував у Відні.

    "З точки зору теоретичного програмування мова Сі - це Фортран 80 - их. (Проти такого принизливій визначення не заперечував і автор мови Сі - Д. Рітчі). Ця мова, що поєднує в собі багато переваг мови високого рівня і асемблера, дав програмістам, за образним висловом деяких, педаль газу, але заблокував педаль гальма. На Сі комп'ютер може "мчати" швидко, але ризиковано. Тобто Сі, насаджуючи посилальної -- асемблерні програмування, як би має вектор в сторону, протилежну тій, яка визначається теорією і методологією мов програмування.

    Тому і Сі + + - це досить дивне поєднання деяких рис ООП (тут і далі - об'єктно - орієнтоване програмування) та процедурного програмування "

    к.т.н. Соловйов А.Є.

    "C + + являє собою цікавий експеримент з адаптації можливостей об'єктної технології до традиційного мови програмування. ... оскільки Сі + + - мова, що вимагає досить інтенсивної критики. Він представляє собою не надто вдалу реалізацію об'єктно - орієнтованої технології, і тому його недоліки просто необхідно піддавати критичному аналізу ... Сі + + приносить всім колосальне розчарування - він увібрав в себе всі погані і старі кошти, а також привніс в об'єктну технологію абсолютно непотрібну складність. Навіщо потрібна мова, наскрізь просочений низькорівневими конструкціями? ".

    Ян Джойнер

    Далі по тексту "Найбільш вірний шлях до успіху - використання чистого об'єктно - орієнтованої мови, що володіє інтерфейсом з мовою програмування С або з іншими низькорівневими мовами. Це забезпечить хороші підтримку і супровід, переносимість та якість ", що в принципі можна спостерігати на прикладі будь-якого засобу 4GL (того ж Delphi) підтримує стандартні засоби взаємодії Windows такі як Dll, Dde, Ole. Найпростіший приклад - звернення з Delphi програми до Win API (адже Windows написаний на Сі (9X) і C + + (NT)).

    Спочатку створений для розробки ОС Unix, мова C набув широкого поширення. Це наклало дуже сильний відбиток на мову.

    Як виник мову С? Спочатку був CPL: він був створений в середині 60 - х років.

    Мова не отримав широкого розповсюдження, але в процесі його створення з'явилася маса ідей. Мова був беcтіповий, як і належить асемблеру (ще PDP 7).

    Нова спрощена версія мови називалася Basic CPL або BCPL. На ньому була реалізована MULTICS. Але в результаті її розмірів і роздутість їй потрібна була заміна.

    Частина ідей з MULTICS була взята розробниками Unix. Приміром, ієрархічна файлова система. Зауважу, що в прямому попереднику DOS-CP/M її не було, як і в першій версії DOS.

    допрацювали мову - Вийшов B.

    Розробили ОС - Вийшла Unix

    Сі розроблявся як кросплатформний асемблер PDP 11 (багато досвідчених програмісти знають його по вітчизняним аналогам), є деякою сумішшю асемблера з Паскалем, цим збіднюється багато його особливості.

    Наприклад:

    Відсутній можливість напряму працювати з даними, не підтримує процесори PDP (безлічі, рядки, etc).

    Присутність явно PDP - орієнтованих конструкцій:

    Функція poly, зводиться до аналогічної команді асемблера. Обчислення ж поліномів НЕ є завданням першорядної важливості мови.

    Постінскремент і предінскремент. На x86, наприклад, це нічого не дає. І A = B + + і A: = B; inc (b); приведуть до команд асемблера MOV a, b; inc b (природно, безпосередньо в коді це будуть не імена змінних, а, наприклад, регістри).

    ".. що аномалії існуючих обчислювальних машин старанно відтворюються в мовах програмування, причому це відбувається на шкоду інтелектуальної керованості програм, виражаються такою мовою .. "Е. Дейкстра." Дисципліна програмування "

    Вірт писав що : "... Мова повинна визначатися в термінах математичних, абстрактних концепцій І тільки, якщо мова відповідає цьому критерію, він може вважатися високорівневим. "

    Змінюються від платформи до платформи розміри типів даних.

    Рядки, закінчуються нулем, запозичені з асемблера (директива. asciz асемблера PDP)

    Відсутність автоматичної або обов'язкової ініціалізації змінних. Плюс такого підходу - Велика оптимальність коду, мінус - необхідність проводити ініціалізацію вручну. Відсутність автоматичної ініціалізації є потенційною можливістю для розробки програмного забезпечення, яке містить нестійкі помилки (в ідеалі компілятор повинен відслідковувати не проводиться чи читання не ініціалізований змінної і у випадку, якщо проводиться, обнуляти її).

    Наявність безлічі "підводних каменів"

    scanf ( "% d% d", & n, & ar [n]);

    Ви думаєте, що буде введено ціле n і n - ий елемент масиву ar?

    Це дуже малоймовірно. Швидше за все, всі аргументи scanf будуть обчислені до того, як операція буде викликана на виконання. Подібних побічних ефектів у мові маса.

    Інша "особливість"

    char

    str [50] = "qwertyuio";

    int a = 3; str [+ + a] = str [+ + a] = '';

    cout

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status