Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    cezocybe
    Аватар для cezocybe
    Гость

    Тонкости языка Pawn

    Здравствуйте дорогие форумчане. Вот в интернете полно информации по языку Pawn. С одной стороны это хорошо, но практически 90% из этого - вранье. В Wikipedia твердят что Pawn - не типизированный язык. Но большая часть программистов Pawn (русскоязычные) твердят что существует 4 типа данных. У меня возникает вопрос - есть ли средство или подход к тонкостям изучения Pawn как языка? Как доказать что Pawn не имеет типов. Где сказано что он не имеет типа (в интернете я не нашел информации). Если есть кто может дать информацию - дайте. Книжку по Pawn от CompuPhase я пока не читал, ибо хочу узнать информацию от обычных программистов.

    Желательно написать как узнать правдивую информацию об языках программирования.

  2. #2
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Как раз в той книжке и сказано, что павн - нетипизированный язык

  3. #3
    Аватар для LLIapuk
    Пользователь

    Статус
    Оффлайн
    Регистрация
    16.08.2015
    Сообщений
    6
    Репутация:
    0 ±

  4. #4
    cezocybe
    Аватар для cezocybe
    Гость
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Как раз в той книжке и сказано, что павн - нетипизированный язык
    Я это знаю уже давно, мне нужны факты доказывающие это. Если Float не тип - где написано верное указание об этом?

  5. #5
    cezocybe
    Аватар для cezocybe
    Гость
    Неужели нету человека который-бы предъявил факты об достоверности отсутствия типизации в языке Pawn.

  6. #6
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от cezocybe Посмотреть сообщение
    Я это знаю уже давно, мне нужны факты доказывающие это. Если Float не тип - где написано верное указание об этом?
    Это не тип данных, а тег, и означает он, что над переменной с таким тегом нельзя совершать целочисленные операции.
    Соль в том, что в интерпретаторе (AMX) не предусмотрено инструкций для работы с вещественными числами - есть только простые арифметические операции (сложение, вычитание, умножение, деление, побитовые сдвиги, инверсия битов, etc.), логические операции (and, or, xor, not, etc.) операции пересылки данных и инструкции для контроля за выполнением кода (jump, jzer, call, sysreq.c, etc.)
    Касаемо данных вещественного типа, они обрабатываются только с помощью нативных функций (float, floatadd, floatsub, floatdiv, floatcmp).
    Мало того, все типы данных имеют фиксированный размер, равный размеру одной ячейки (кроме массивов, но и у них размер кратен размеру ячейки). В версии Pawn, используемой в SA:MP, этот размер равен 4 байтам.

    Tl;dr: В Pawn на уровне языка поддерживаются лишь простейшие операции над целыми числами, работа над другими типами данных - только через нативные функции. Именно поэтому сам автор Pawn называет этот язык бестиповым. Пруфы - в pawn-lang.pdf, просто вбейте в поиске по документу слово "typeless".
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  7. 3 пользователя(ей) сказали cпасибо:
    $continue$ (05.11.2015) Sp1ke (05.11.2015) [ForD] (04.11.2015)
  8. #7
    cezocybe
    Аватар для cezocybe
    Гость
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Это не тип данных, а тег, и означает он, что над переменной с таким тегом нельзя совершать целочисленные операции.
    Соль в том, что в интерпретаторе (AMX) не предусмотрено инструкций для работы с вещественными числами - есть только простые арифметические операции (сложение, вычитание, умножение, деление, побитовые сдвиги, инверсия битов, etc.), логические операции (and, or, xor, not, etc.) операции пересылки данных и инструкции для контроля за выполнением кода (jump, jzer, call, sysreq.c, etc.)
    Касаемо данных вещественного типа, они обрабатываются только с помощью нативных функций (float, floatadd, floatsub, floatdiv, floatcmp).
    Мало того, все типы данных имеют фиксированный размер, равный размеру одной ячейки (кроме массивов, но и у них размер кратен размеру ячейки). В версии Pawn, используемой в SA:MP, этот размер равен 4 байтам.

    Tl;dr: В Pawn на уровне языка поддерживаются лишь простейшие операции над целыми числами, работа над другими типами данных - только через нативные функции. Именно поэтому сам автор Pawn называет этот язык бестиповым. Пруфы - в pawn-lang.pdf, просто вбейте в поиске по документу слово "typeless".
    Теперь всё понятно. Можете сказать где вы нашли такую подробную информацию?

  9. #8
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от cezocybe Посмотреть сообщение
    Теперь всё понятно. Можете сказать где вы нашли такую подробную информацию?
    В основном в документации от CompuPhase - принцип работы интерпретатора вместе со списком опкодов AMX приведён в Pawn Implementer's Guide.
    Ещё кое-чего полезного можно найти в Pawn Language Guide. Например, размер ячеек в байтах узнаётся следующим образом: в Pawn есть константы cellbits и charbits, в которых указано количество бит в ячейке и в байте соответственно. Разделив одно на другое (cellbits / charbits) можно получить кол-во байт на 1 ячейку (как я уже говорил ранее, в SA:MP это значение равно четырём).
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  10. 2 пользователя(ей) сказали cпасибо:
    Nurick (07.11.2015) Profyan (06.11.2015)
  11. #9
    cezocybe
    Аватар для cezocybe
    Гость
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    В основном в документации от CompuPhase - принцип работы интерпретатора вместе со списком опкодов AMX приведён в Pawn Implementer's Guide.
    Ещё кое-чего полезного можно найти в Pawn Language Guide. Например, размер ячеек в байтах узнаётся следующим образом: в Pawn есть константы cellbits и charbits, в которых указано количество бит в ячейке и в байте соответственно. Разделив одно на другое (cellbits / charbits) можно получить кол-во байт на 1 ячейку (как я уже говорил ранее, в SA:MP это значение равно четырём).
    Следующий вопрос слегка некорректен и не разумен, но думаю стоит задать.

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

    Как ты считаешь, если человек имеет базу английских слов (допустим 10.000) - то этот результат скажется на прочтении той-же документации по Pawn? Как ты считаешь?

  12. #10
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от cezocybe Посмотреть сообщение
    Следующий вопрос слегка некорректен и не разумен, но думаю стоит задать.

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

    Как ты считаешь, если человек имеет базу английских слов (допустим 10.000) - то этот результат скажется на прочтении той-же документации по Pawn? Как ты считаешь?
    Не думаю что DC пользуется переводчиком, насколько я понимаю такой легендарный кодер должен это знать и всегда хранить в памяти, и он очень хорошо знает английский.

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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