понедельник, 18 февраля 2013 г.

сравнение языков программирования, c++, c#

printf("%d ", *pa); // получим 3

pa = &a; // записали адрес данных переменной a

int *pa; // это указатель

Куда интересней обстоит дело с переменными-указателями (будем далее называть их просто указатели, чтобы отличать от обычных переменных).

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

Если вы не знаете язык, отмечу, что во второй строке у пользователя просто запрашивается целое число и присваивается переменной qty. Когда программа, содержащая такой код, запускается, то в памяти "бронируется" ряд ячеек под эту переменную. Устанавливается связь между именем qty и первой ячейкой блока памяти, отведенного под данные. Программа анализирует тип переменной и получат сведения, что ее значение простирается на четыре байта (в языке C integer обычно имеет длину в 4 байта). Переменная qty на все время выполнения программы прикреплена к определенным ячейкам. Нельзя оторвать имя qty от этих ячеек и связать с другими. Мы можем только менять содержимое определенных ячеек. Далее сначала запрашивается число у пользователя и кладется в qty, пусть это будет число 5 (понятно, что в памяти хранится двоичный код, но для наглядности на картинке десятичные цифры), затем это число увеличивается на два и содержимое ячеек переписывается.

scanf("%d", &qty);

Рассмотрим конкретный пример. Пусть есть вот такой код на языке C:

Можно сказать, в Python переменная в процессе выполнения скрипта может менять сколь угодно раз свой тип. На самом деле типа у нее просто нет.

В Python переменные не хранят информацию о типе данных, с которыми связаны. Сведения о типе привязаны к данным. Поэтому в Python не надо объявлять переменные заранее и не надо указывать их тип. Переменным все равно с чем их свяжут. Они появляются в момент присвоения им значения (count = 10, height = 1.45). Но, понятное дело, нельзя использовать в выражении переменную, которой не было присвоено значение ранее.

Когда в C мы объявляем переменные, то обязаны указывать их тип. Например, так: int base, float width. Тип переменной сообщает программе сколько памяти надо выделить под данные, и программа при обращении к переменной правильно может их прочитать (она читает определенное типом количество байт). В языке программирования C сведения о типе данных привязаны к переменным. Когда программа, созданная на C запускается, то все объявленные в ней переменные привязываются к определенным ячейкам памяти и уже не могут быть связаны с другими ячейками до конца выполнения программы.

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

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

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

Опубликовано plustilino в Июнь 2, 2012 - 19:20. Changed Июнь 2, 2012 - 19:30

Сравнение переменных в языках программирования C и Python

Графика и анимация

Программирование для детей

Свободное программное обеспечение и информатика. Linux для начинающих

Сравнение переменных в языках программирования C и Python | Лаборатория юного линуксоида

Комментариев нет:

Отправить комментарий