Перейти к содержанию

call_eax

Пользователи
  • Публикаций

    1
  • Зарегистрирован

  • Посещение

Личная информация

  • Любимое Аниме
    trigun

call_eax's Achievements

Дэнкосэ 2-А класса

Дэнкосэ 2-А класса (1/34)

  1. Я слежу за тобой

  2. весьма экстравагантное начало. а главное, в тему. настоящий программист.

  3. Сейчас начнется треп типа: "Это не форум программистов, это форум Евангелиона...". Я знаю, я уважаю Евангелион и вообще аниме, просто захотелось написать про это... На различных форумах часто можно видеть сообщения типа:"Паскаль говно, Си рулит!". Но если задать вопрос их авторам: "Почему ты так считаешь", в ответ получаешь избитые фразы: "На нем игры пишут" или "На нем операционки пишут" и т.п. В этой статье я бы хотел осветить некоторые преимущества и недостатки этих языков и поделиться своим мнением по этому поводу. Начну я с самого, на мой взгляд, простого. Во первых, вместо Паскалевских begin и end в Си есть { и }. Дальше арифметические операции. Паскаль: ... x := x+1; a := a*b; ... Си: ... x++; a *= b; ... В Си также удобно организовано приведение типов. Любой тип можно привести к любому другому, причем без проблем. Тип, к которому нужно привести, указывается в скобках. В паскале для этого используются какие-то левые функции, что весьма неудобно... Паскаль: var a: intger; x: real; ... // приведение типа a := Trunc(x); ... Си: ... int a; float x; // приведение типа a = (int)x; ... Дальше условные операторы и циклы. Паскаль: ... // Условный оператор if x <> 0 then y := a/x; ... // Цикл while head <> nil do head := head^.next; ... Си: ... // Условный оператор if(x) x--; ... // Цикл while(head) head = head->next; ... Короче, запись на языке Си короче и понятнее, чем запись на Паскале. Интересно, кто-нибудь дочитал до этого момента. Дальше самое интересное. Работа с памятью. В Си все устроено настолько прозрачно... Си: void main { int a[10]; int *b = &a[0]; b[3] = 8; // У нас в массиве 10 элементов, но это // не мешает нам обратиться к 100 a[5] = b[100]; // Или записать туда какой-нибудь мусор a[100] = 100; // Другой вопрос, к чему это приведет... *(b+2) += 10; ... } В Паскале можно задавать диапозон значений в массиве, но в Си это легко обойти Паскаль: ... var a: array [5..9] of integer; ... a[7] := 10; ... Си: ... int *b = new int[5]; int *a = (a-5); ... a[7] = 10; ... Плюс, в Си есть классы памяти. Можно работать с регистровыми переменными. Про удобство классов я вообще молчу. Это отдельная история. На самом деле говорить об этом можно очень долго, Я и 10% не рассказал. Я даже не начинаю про особенности компиляции... Короче, Си сделан программистами для программистов. Про Паскаль я молчу. Хорошо, что хоть встроенный ассемблер поддерживает. Если кому понравился мой треп, можете присылать свои вопросы на мыло: call_eax@mail.ru. Я довольно хорошо разбираюсь в программировании, так что не стесняйтесь.
×
×
  • Создать...