Карталинский форум

Карталинское Веб Общение
Текущее время: 29 мар 2024, 04:27


Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 230 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12
Автор Сообщение
 Заголовок сообщения: Re: Програмирование.
Непрочитанное сообщениеДобавлено: 20 янв 2011, 16:50 
Не в сети
Модератор
Модератор
Аватара пользователя

Сообщения: 376
Благодарил (а): 0 раз.
Поблагодарили: 8 раз.
Amigo писал(а):
SAA
Ничего там по делу нет, спорят что "моя лучше чем твоя"...


Кое-что есть, например ты наверняка узнал что есть такие языки как функциональные, понятие метапрограммирование. Почему С++ и Си разные языки в некотором роде, и почему С++ надо пользоваться аккуратно. Остальное стеб - согласен.

Цитата:
Кстати, прошлый раз хотел спросить, чем ты отделяешь бейсико-подобный язык от Си и прочего подобного? Те же циклы, те же условия.


Прежде всего "Си-подобный" - так не говорят, например Pascal, Modula, Oberon, Algol, PL/1, Ada, Fortran, Рапира совсем не Си подобны. Это как с животными - есть вид, а есть семейство. Бэйсик в первую очередь не компилируемый язык и этим сильно отличается от языков компилируемых. Второе Бэйсик язык с автоматическими приведениями типов и автоматическими переменными. Это значит буквально следующее - фактически память под переменные распределяется автоматически по требованию.

10 A = 10
20 A = 10.20
30 A = 1234567890123432

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

10 A = 10
20 B = 0.0001
30 A = A + B

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

10 A = 10
20 B = 9.99
30 B = 9.99 + 0.01
40 A = 10 + B

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

var
A : integer;

begin
A := 10;
A := A + 0.01;

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

{
unsigned char i = 22;
short unsigned int a = 1100;

i = i + a;

}

Этот код выдаст предупреждение (может быть ошибку в зависимости от компилятора) но после запуска программа выдаст результат i = 98. Потому что размер i это байт а он не вмещает в себя все разряды суммы указанной выше, только последние восемь ее разрядов будут записаны в переменную.

{
unsigned char i = 250;
if(i < 0)
{
puts("Это строка может быть не будет напечатана никогда");
}
}

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

{
unsigned char i = 255;
char a;

a = i;
a = 200 - a;
}

В этом фрагменте кода полученное значение a будет равняться 11, а не -55 и вовсе не потому что значение больше размера переменной (он в границах для целого со знаком размером в байт -128...127), а потому что при первом присваивании тип i не будет учтен для типа а, значение 255 это -1.

Как считаешь достаточно серьезные различия у Бейсика и допустим Си, Паскаль?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Програмирование.
Непрочитанное сообщениеДобавлено: 21 янв 2011, 10:16 
Не в сети
Модератор
Модератор
Аватара пользователя

Сообщения: 376
Благодарил (а): 0 раз.
Поблагодарили: 8 раз.
SAA писал(а):

{
unsigned char i = 255;
char a;

a = i;
a = 200 - a;
}

В этом фрагменте кода полученное значение a будет равняться 11


Пардон "накосил", значение a будет равно 201 a = (200 - (-1)).


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Програмирование.
Непрочитанное сообщениеДобавлено: 25 янв 2011, 11:54 
Не в сети
Модератор
Модератор
Аватара пользователя

Сообщения: 376
Благодарил (а): 0 раз.
Поблагодарили: 8 раз.
to Амиго:

Рекомендую тебе к прочтению и пониманию что ж такое WinAPI и что такое функция окна, да и как написать минимальное приложение на WinAPI на C++ как на Си :). То есть там ничего плюсового на самом деле нет :)
http://procoder.info/index.php?option=c ... Itemid=200


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Програмирование.
Непрочитанное сообщениеДобавлено: 26 янв 2011, 09:03 
Не в сети
Пользователь
Пользователь
Аватара пользователя

Сообщения: 1264
Откуда: Карталы
Благодарил (а): 9 раз.
Поблагодарили: 70 раз.
Пол: Муж
SAA
Код нерабочий. Смущает (L"CMyWnd", - ошибка одинаковая в 3 местах, на что Dev-Cpp указал. Также строка:
SetTimer (hWnd, 1, USER_TIMER_MINIMUM, NULL);
функции SetTimer в автоподстановке нет, но нашёл в include - winuser.h, а его упоминания в "шапке" кода нет. Добавил необходимые хидеры, и даже лишние, всё равно Dev-Cpp выдал ошибку USER_TIMER_MINIMUM. Если это переменная-константа, то должна быть либо в хидерах, либо в коде. Поиск по тексту в папке include положительных результатов не дал. Видимо нужно "Visual C++", под которой автор писал свой код.

Лучше вот посмотри - ссылка

_________________
предлагаю услуги по настройке компьютера, подробнее


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Програмирование.
Непрочитанное сообщениеДобавлено: 26 янв 2011, 13:22 
Не в сети
Модератор
Модератор
Аватара пользователя

Сообщения: 376
Благодарил (а): 0 раз.
Поблагодарили: 8 раз.
Amigo писал(а):
SAA
функции SetTimer в автоподстановке нет, но нашёл в include - winuser.h, а его упоминания в "шапке" кода нет. Добавил необходимые хидеры, и даже лишние, всё равно Dev-Cpp выдал ошибку USER_TIMER_MINIMUM. Если это переменная-константа, то должна быть либо в хидерах, либо в коде. Поиск по тексту в папке include положительных результатов не дал. Видимо нужно "Visual C++", под которой автор писал свой код.


Нужен microsoft-овский хидер я полагаю, а GCC может не все знать о строении Windows :)

читаем: http://msdn.microsoft.com/en-us/library ... 06(v=vs.85).aspx

Гуглиться за секунды.

Цитата:
Константы USER_TIMER_MINIMUM и USER_TIMER_MAXIMUM равны соответственно 0xA и 0x7FFFFFFF. Идем дальше... Заглянем в функцию __SetTimer, которая сводится к вызову InternalSetTimer.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Програмирование.
Непрочитанное сообщениеДобавлено: 26 янв 2011, 13:25 
Не в сети
Модератор
Модератор
Аватара пользователя

Сообщения: 376
Благодарил (а): 0 раз.
Поблагодарили: 8 раз.
Amigo писал(а):
Лучше вот посмотри - ссылка


Я уж по моему просил обойтись без рекламы? Ты все никак не можешь понять что твои поделия тут не уместны, точно так же как я не публикую ссылки на свой блог и на свой программы, а отсылаю тебе в приват или участнику с которым общаюсь. Мне просить администрацию форума обратить внимание на твои попытки "пиариться" за счет форума kartaly.ru?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Програмирование.
Непрочитанное сообщениеДобавлено: 26 янв 2011, 14:50 
Не в сети
Пользователь
Пользователь
Аватара пользователя

Сообщения: 1264
Откуда: Карталы
Благодарил (а): 9 раз.
Поблагодарили: 70 раз.
Пол: Муж
SAA
Будь скромнее. При таком ответе, лично тебе ничего выкладывать не буду. И то что выложил, можешь не причислять себе, ты же не один на форуме. Возможно кому-то будет интересно, не нужно своё мнение выдавать за общественное.
Писать жалобу одминистрации твоё право, кнопка справа-внизу.

_________________
предлагаю услуги по настройке компьютера, подробнее


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Програмирование.
Непрочитанное сообщениеДобавлено: 26 янв 2011, 14:57 
Не в сети
Модератор
Модератор
Аватара пользователя

Сообщения: 376
Благодарил (а): 0 раз.
Поблагодарили: 8 раз.
Amigo писал(а):
SAA
Будь скромнее....


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

Понимаю твою фразу "Вот посмотри тут" со ссылкой как направленную лично мне, считаю что ты обязан был писать в приват.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Програмирование.
Непрочитанное сообщениеДобавлено: 18 апр 2011, 06:05 
Не в сети
Пользователь
Пользователь
Аватара пользователя

Сообщения: 1264
Откуда: Карталы
Благодарил (а): 9 раз.
Поблагодарили: 70 раз.
Пол: Муж
Интересная статья по защите авторских прав. Практически авторство признаётся за IT-специалистом даже если ПО создано по заданию работодателя, но с исключительным правом использования ПО работодателем как служебное.

_________________
предлагаю услуги по настройке компьютера, подробнее


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Програмирование.
Непрочитанное сообщениеДобавлено: 09 апр 2013, 13:43 
Не в сети
Пользователь
Пользователь
Аватара пользователя

Сообщения: 1264
Откуда: Карталы
Благодарил (а): 9 раз.
Поблагодарили: 70 раз.
Пол: Муж
Не много (пару месяцев) поучив язык Си вот общее впечатление о различии AutoIt и Си. Во первых сравнивать их не совсем корректно, потому что многие не считают AutoIt языком программирования (да он и позиционируется как скриптовой язык), а я бы сказал, что AutoIt это обёртка сишных функций. Разработчики - професионалы в программировании общими усилиями на языке Си, С++ сделали интерпретатор, синтаксис которого ближе к человеческому пониманию, чем язык C/C++.

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

Теперь о более конкретных отличиях:
1. Что бы прочитать файл в переменную нужно вызвать
$sText = FileRead(@ScriptDir & '\file.txt')
При этом AutoIt за кулисами производит все действия, которые пришлось бы писать на языке Си.
На языке Си это выглядело бы так: с помощью fopen получаем указатель на объект файла, с помощью fread читаем файл в переменную. Но нужно ещё выделить память для этого. С помощью указателя позиции в файле определяем необходимый для умещения файла размер, чтобы передать его в функцию malloc для выделения памяти. При этом если требуется обработать файл, то нужно следить чтобы при увеличении размера перевыделить память и заботится об освобождении памяти (моет машину, но не смывает пену).

2. Работа с переменными. В AutoIt не нужно задумываться о выделении памяти, просто присвоить переменной любые данные, числа, строки любой длины. Память для них выделяется автоматически. В Си есть два типа данных: переменные которые определены при старте, размер которых не меняется (долго не мог понять как же с ними работать, оказывается есть куча), и переменные которым выделяется память с помощью malloc по запросу в процессе работы/обработки данных. Эта память называется куча.

3. Типизация. В AutoIt переменной может быть присвоено любое значение, любого типа. Хоть оно внутренне определяет тип данных, но при этом не ограничивает. Данные автоматически приводятся к нужному типу. Если передать данные в функцию, которая требует строку, то данные преобразуются в строку. В Си данные типизированны, то есть нельзя в тип "число" вписывать букву, а тем более строку. А если не выделить память и писать строку большего размера, то запишет лишка в другой процесс находящийся в памяти, который потом повиснет. В Си конечно же есть также приведение типов, в AutoIt это происходит за кулисами.

4. В настоящий момент при современных мощностях процессоров высоко ценится скорость создания программы. AutoIt позволяет сразу писать программы, не задумываясь об устройстве.

_________________
предлагаю услуги по настройке компьютера, подробнее


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 230 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12   | Активные темы |  


Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © phpBB Group
ѥ골񦲳񲯢 ԰᪗eb