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

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Если говорить о языках программирования, то на просторах интернета существует сайт, так вот, на этом сайте есть список разных учебников (ссылок на учебники): сам сайт.

    Про ассемблер скажу так: он нужен только для увеличения производительности.

    P.S.: сейчас появляются новые языки программирования, например, то же Rust

  2. Пользователь сказал cпасибо:
    InCorrect (05.01.2016)
  3. #12
    Аватар для InCorrect
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.12.2015
    Сообщений
    24
    Репутация:
    2 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Искал я себе книгу: "Чарльз Петцольд: Код. Тайный язык информатики" в бумажном варианте, так и не нашел.
    Хорошая, книга. Но, вряд ли там есть описание работы компиляторов.

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



    Pawn - не лучший язык программирования. Изучая его Вы изучаете плохую практику программирования. В Pawn используется методы Си89 (около того).
    Если ради увлечения - то можно изучать Pawn. Если Вы хотите продолжить свою жизнь с "компьютером" - то стоит выбрать, что то потяжелее. Я бы на этот случий посоветовал: Lua, Squirrel, Python, node.js

    И на всем этом можно программировать под SA-MP, конечно надо знать как работает Pawn Virtual Machine (PVM)

    Lua in SA-MP [plugins]

    Squirrel in SA-MP [plugins]
    Жаль, то что под Linux поддержки нет.

    Python in SA-MP [plugins]

    node.js in SA-MP [plugins]



    Но при это всем, надо понимать, что поддержку плагинов вряд ли введут. В случии обновлении серверной части (Обновление SA-MP от разработчиков), Вам придется самостоятельно добавлять функции, который были анонсированы.

    На счёт скринов, циферок, букв: Это assembler. На ранних стадиях разработки - Вам это будет не нужно. Сейчас мало кто пишет assembler, но листинг знать желательно. Почти, все программы переводятся в assembler

    P.S: Читать будет трудно "многабукф"
    Большое спасибо.Обязательно прочитаю эти две книги.Из языков программирования выбор пал на Python.Начну изучать и постепенно переводить на него мод

    Цитата Сообщение от VVWVV Посмотреть сообщение
    Если говорить о языках программирования, то на просторах интернета существует сайт, так вот, на этом сайте есть список разных учебников (ссылок на учебники): сам сайт.

    Про ассемблер скажу так: он нужен только для увеличения производительности.

    P.S.: сейчас появляются новые языки программирования, например, то же Rust
    Весьма полезный сайт.Спасибо.Производительность - именно то, что меня интересует последнее время
    Последний раз редактировалось InCorrect; 05.01.2016 в 06:25.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от InCorrect Посмотреть сообщение
    Доброго дня.Вопрос следующий:
    PHP код:
    stock ShowDialogRegister(playerid)
    {
        static const 
    text_box_register[] =
            
    "{ffffff}Добро пожаловать на сервер Atlant Role Play!\n"\
            
    "{ffffff}Ваш аккаунт %s не найден в нашей базей данных\n\n"\
            
    "Пройдите процесс регистрации\n"\
            
    "Введите пароль\n\n"\
                    
    "Максимальная длина пароля - 15 символов";
        new 
    string[sizeof(text_box_register) - MAX_PLAYER_NAME 1];
        
    format(stringsizeof(string), text_box_registerPlayerInfo[playerid][Name]);
        
    ShowPlayerDialog(playerid1DIALOG_STYLE_INPUT, !"{1976D2}Регистрация"string, !"Далее", !"Отмена");

    как можно оптимизировать этот код?Да и в целом, как работать с большими строками?
    Вместо format можно использовать strcat (3 вызова strcat таки эффективнее, чем 1 вызов format).
    PHP код:
    stock ShowDialogRegister(playerid)
    {
        static const 
    str0[] =
            !
    "{ffffff}Добро пожаловать на сервер Atlant Role Play!\n"\
            
    "{ffffff}Ваш аккаунт ";
        static const 
    str1[] =
            !
    " не найден в нашей базей данных\n\n"\
            
    "Пройдите процесс регистрации\n"\
            
    "Введите пароль\n\n"\
            
    "Максимальная длина пароля - 15 символов";
        const 
    string_length =
            (
    sizeof(str0) - 1) * cellbits charbits +
            
    MAX_PLAYER_NAME +
            (
    sizeof(str1) - 1) * cellbits charbits +
            
    1;
        new 
    string[string_length char];
        
    string str0;
        
    strcat(stringPlayerInfo[playerid][Name]);
        
    strcat(stringstr1);
        return 
    ShowPlayerDialog(
            
    playerid1DIALOG_STYLE_INPUT,
            !
    "{1976D2}Регистрация"string, !"Далее", !"Отмена"
        
    );

    По поводу предложенных выше языков программирования - это всё скриптовые языки. На самом деле мало хорошего в использовании ещё одного интерпретатора (того, который нужен для нового скриптового ЯП) поверх другого (используемого в сервере SA:MP). Упростится только процесс разработки, но на производительность кода это если и повлияет, то только в отрицательном направлении. Если хотите убить двух зайцев одним выстрелом, советую начать изучать C++ и работать с SAMPGDK. Получите сразу кучу языковых средств и уже готовых библиотек на С/C++ вкупе с приличной производительностью за счёт компиляции в нативный код.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. 2 пользователя(ей) сказали cпасибо:
    DeimoS (05.01.2016) L0ndl3m (05.01.2016)
  6. #14
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Просто для информативности. Форматирование в данном случаи быстрее. Для теста я использовал метод профилирования DC (и его код :D)

    Код:
    Тестирование: <format> vs <strcat>
    Режим: интерпретируемый, 10000x1000 итераций.
    format: 7851
    strcat: 12718
    
    Тестирование: <format> vs <strcat>
    Режим: с JIT-компиляцией, 10000x1000 итераций.
    format: 6597
    strcat: 13036
    PHP код:
    static const nickname[] = "Abcdef_Ghijklmn";

    #define Prerequisites();\
        
    new string[256];

    #define CodeSnippet1();\
        
    static const str0[] =\
            !
    "{ffffff}Добро пожаловать на сервер Atlant Role Play!\n"\
            
    "{ffffff}Ваш аккаунт ";\
        static const 
    str1[] =\
            
    " не найден в нашей базей данных\n\n"\
            
    "Пройдите процесс регистрации\n"\
            
    "Введите пароль\n\n"\
            
    "Максимальная длина пароля - 15 символов";\
        
    string str0;\
        
    strcat(stringnickname);\
        
    strcat(stringstr1);
        
    #define CodeSnippet2();\
        
    format(stringsizeof(string),\
            
    "{ffffff}Добро пожаловать на сервер Atlant Role Play!\n"\
            
    "{ffffff}Ваш аккаунт %s не найден в нашей базей данных\n\n"\
            
    "Пройдите процесс регистрации\n"\
            
    "Введите пароль\n\n"\
            
    "Максимальная длина пароля - 15 символов",\
            
    nickname\
        ); 
    И как вам уже говорили, здесь мало что можно оптимизировать. Ваш вариант и так вполне хорош и годен для использования. Для кулмегаоптимизейшен юзайте GDK(ссылка верхнем посте), причина и плюсы даны. От себя лишь добавлю: можно выводить форматированный диалог только для первого раза, ибо все другие показы ничем не будут отличаться от первоначального результата. Для показа всех остальных сообщений можно брать Set/GetPVarString (тогда и этой почитайте). Но я не практикуюсь черной магией и просто показываю обычный диалог с выводом ошибки игрока (например, "слишком маленький пароль" и т.д.). Это просто мое предположение, я просто не могу придумать других 5 причин показа окна приветствия, назовет это так.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
     Спрятал для удобства //DC
    Просто для информативности. Форматирование в данном случаи быстрее. Для теста я использовал метод профилирования DC (и его код :D)

    Код:
    Тестирование: <format> vs <strcat>
    Режим: интерпретируемый, 10000x1000 итераций.
    format: 7851
    strcat: 12718
    
    Тестирование: <format> vs <strcat>
    Режим: с JIT-компиляцией, 10000x1000 итераций.
    format: 6597
    strcat: 13036
    PHP код:
    static const nickname[] = "Abcdef_Ghijklmn";

    #define Prerequisites();\
        
    new string[256];

    #define CodeSnippet1();\
        
    static const str0[] =\
            !
    "{ffffff}Добро пожаловать на сервер Atlant Role Play!\n"\
            
    "{ffffff}Ваш аккаунт ";\
        static const 
    str1[] =\
            
    " не найден в нашей базей данных\n\n"\
            
    "Пройдите процесс регистрации\n"\
            
    "Введите пароль\n\n"\
            
    "Максимальная длина пароля - 15 символов";\
        
    string str0;\
        
    strcat(stringnickname);\
        
    strcat(stringstr1);
        
    #define CodeSnippet2();\
        
    format(stringsizeof(string),\
            
    "{ffffff}Добро пожаловать на сервер Atlant Role Play!\n"\
            
    "{ffffff}Ваш аккаунт %s не найден в нашей базей данных\n\n"\
            
    "Пройдите процесс регистрации\n"\
            
    "Введите пароль\n\n"\
            
    "Максимальная длина пароля - 15 символов",\
            
    nickname\
        ); 
    И как вам уже говорили, здесь мало что можно оптимизировать. Ваш вариант и так вполне хорош и годен для использования. Для кулмегаоптимизейшен юзайте GDK(ссылка верхнем посте), причина и плюсы даны. От себя лишь добавлю: можно выводить форматированный диалог только для первого раза, ибо все другие показы ничем не будут отличаться от первоначального результата. Для показа всех остальных сообщений можно брать Set/GetPVarString (тогда и этой почитайте). Но я не практикуюсь черной магией и просто показываю обычный диалог с выводом ошибки игрока (например, "слишком маленький пароль" и т.д.). Это просто мое предположение, я просто не могу придумать других 5 причин показа окна приветствия, назовет это так.
    Ты перепутал местами "format" и "strcat" в результатах.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. 2 пользователя(ей) сказали cпасибо:
    Desulaid (05.01.2016) InCorrect (05.01.2016)
  9. #16
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Ты перепутал местами "format" и "strcat" в результатах.
     о/з


    Точно же. Ну strcat one love!

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

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Вместо format можно использовать strcat (3 вызова strcat таки эффективнее, чем 1 вызов format).
    PHP код:
    stock ShowDialogRegister(playerid)
    {
        static const 
    str0[] =
            !
    "{ffffff}Добро пожаловать на сервер Atlant Role Play!\n"\
            
    "{ffffff}Ваш аккаунт ";
        static const 
    str1[] =
            !
    " не найден в нашей базей данных\n\n"\
            
    "Пройдите процесс регистрации\n"\
            
    "Введите пароль\n\n"\
            
    "Максимальная длина пароля - 15 символов";
        const 
    string_length =
            (
    sizeof(str0) - 1) * cellbits charbits +
            
    MAX_PLAYER_NAME +
            (
    sizeof(str1) - 1) * cellbits charbits +
            
    1;
        new 
    string[string_length char];
        
    string str0;
        
    strcat(stringPlayerInfo[playerid][Name]);
        
    strcat(stringstr1);
        return 
    ShowPlayerDialog(
            
    playerid1DIALOG_STYLE_INPUT,
            !
    "{1976D2}Регистрация"string, !"Далее", !"Отмена"
        
    );

    По поводу предложенных выше языков программирования - это всё скриптовые языки. На самом деле мало хорошего в использовании ещё одного интерпретатора (того, который нужен для нового скриптового ЯП) поверх другого (используемого в сервере SA:MP). Упростится только процесс разработки, но на производительность кода это если и повлияет, то только в отрицательном направлении. Если хотите убить двух зайцев одним выстрелом, советую начать изучать C++ и работать с SAMPGDK. Получите сразу кучу языковых средств и уже готовых библиотек на С/C++ вкупе с приличной производительностью за счёт компиляции в нативный код.
    На русском языке почти нет уроков по SAMP GDK.Возможно, если кто-нибудь на этом портале его освоил, может сделать серию уроков, тем самым добавит уникальность форуму и для многих будет это интересно



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  11. #18
    Аватар для InCorrect
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.12.2015
    Сообщений
    24
    Репутация:
    2 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Вместо format можно использовать strcat (3 вызова strcat таки эффективнее, чем 1 вызов format).
    PHP код:
    stock ShowDialogRegister(playerid)
    {
        static const 
    str0[] =
            !
    "{ffffff}Добро пожаловать на сервер Atlant Role Play!\n"\
            
    "{ffffff}Ваш аккаунт ";
        static const 
    str1[] =
            !
    " не найден в нашей базей данных\n\n"\
            
    "Пройдите процесс регистрации\n"\
            
    "Введите пароль\n\n"\
            
    "Максимальная длина пароля - 15 символов";
        const 
    string_length =
            (
    sizeof(str0) - 1) * cellbits charbits +
            
    MAX_PLAYER_NAME +
            (
    sizeof(str1) - 1) * cellbits charbits +
            
    1;
        new 
    string[string_length char];
        
    string str0;
        
    strcat(stringPlayerInfo[playerid][Name]);
        
    strcat(stringstr1);
        return 
    ShowPlayerDialog(
            
    playerid1DIALOG_STYLE_INPUT,
            !
    "{1976D2}Регистрация"string, !"Далее", !"Отмена"
        
    );

    По поводу предложенных выше языков программирования - это всё скриптовые языки. На самом деле мало хорошего в использовании ещё одного интерпретатора (того, который нужен для нового скриптового ЯП) поверх другого (используемого в сервере SA:MP). Упростится только процесс разработки, но на производительность кода это если и повлияет, то только в отрицательном направлении. Если хотите убить двух зайцев одним выстрелом, советую начать изучать C++ и работать с SAMPGDK. Получите сразу кучу языковых средств и уже готовых библиотек на С/C++ вкупе с приличной производительностью за счёт компиляции в нативный код.
    Я правильно понял: написание игрового мода на С++ (SAMPGDK) будет эффективней чем на обычном Pawn?

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от InCorrect Посмотреть сообщение
    Я правильно понял: написание игрового мода на С++ (SAMPGDK) будет эффективней чем на обычном Pawn?
    В чём профит писать всё шрифтом Century Gothic? И нет, я не говорю, что лучше делать моды на C++. Если вы не знаете этот язык, то только потеряете кучу времени на его изучение. При желании можно и на Pawn написать высокопроизводительный код.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  13. #20
    Аватар для InCorrect
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.12.2015
    Сообщений
    24
    Репутация:
    2 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    В чём профит писать всё шрифтом Century Gothic?
    Даже не знаю

    - - - Добавлено - - -

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    PHP код:
    const string_length =
            (
    sizeof(str0) - 1) * cellbits charbits +
            
    MAX_PLAYER_NAME +
            (
    sizeof(str1) - 1) * cellbits charbits +
            
    1
    Что это означают?Можно пояснение?
    PHP код:
     cellbits charbits 

 

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

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

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

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

Ваши права

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