Теория шахматного программирования

Тема в разделе "Машинное отделение", создана пользователем WildCat, 16 фев 2008.

  1. koly Новичок

    • Новичок
    Рег.:
    12.11.2016
    Сообщения:
    51
    Симпатии:
    14
    Репутация:
    -2
    Оффлайн
    Стокфиш на ассемблере написан ??
  2. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    7.960
    Симпатии:
    1.302
    Репутация:
    50
    Адрес:
    Москва
    Оффлайн
    Challenger Spy и Degtyarchuk нравится это.
  3. Smarti Новичок

    • Новичок
    Рег.:
    20.01.2012
    Сообщения:
    25
    Симпатии:
    14
    Репутация:
    0
    Оффлайн
    Он написан на C++, может быть с ассемблерными вставками, но точно на C++ https://github.com/official-stockfish/Stockfish/tree/master/src
    Degtyarchuk и Sanchessus нравится это.
  4. Nanto Новичок

    • Новичок
    Рег.:
    15.11.2016
    Сообщения:
    23
    Симпатии:
    17
    Репутация:
    0
    Оффлайн
    А какая разница, на чём он написан? Важен сам алгоритм. А портировать-то можно на любой язык и платформу.
    Ну и ассемблер очень не универсален - надо под каждую архитектуру писать свой код.
    Исходники-то на плюсах. И в них, на удивление, мало кода... Я-то думал там серьёзная эвристика. А похоже что просто оптимизация перебора. Ну и теперь понятно почему движки с оценками позиций порой ерунду всякую городят.
  5. koly Новичок

    • Новичок
    Рег.:
    12.11.2016
    Сообщения:
    51
    Симпатии:
    14
    Репутация:
    -2
    Оффлайн
    Проги на Ассемблере быстрее работают.
  6. Smarti Новичок

    • Новичок
    Рег.:
    20.01.2012
    Сообщения:
    25
    Симпатии:
    14
    Репутация:
    0
    Оффлайн
    Проги на Ассемблере сложнее поддерживать, никто не пишет серьезный софт на ассемблере. Проще купить новый процессор, чем разрабатывать на ассемблере.
    Sanchessus нравится это.
  7. nh2008 Учаcтник

    • Участник
    Рег.:
    01.12.2013
    Сообщения:
    1.423
    Симпатии:
    1.093
    Репутация:
    71
    Адрес:
    Украина
    Оффлайн
    С чего это вдруг?
  8. Nanto Новичок

    • Новичок
    Рег.:
    15.11.2016
    Сообщения:
    23
    Симпатии:
    17
    Репутация:
    0
    Оффлайн
    Ну вообще да. Нет временных затрат на работу компилятора/интерпретатора. Код идёт напрямую инструкциями для процессора. Другое дело, что это временной выигрыш может быть ничтожен (по сравнению со временем выполнения самого алгоритма). В то время как недостатков (и довольно объективных) хватает (неуниверсальность, временные и трудо-затраты на разработку).
  9. dom1n1k Новичок

    • Новичок
    Рег.:
    18.11.2016
    Сообщения:
    40
    Симпатии:
    40
    Репутация:
    1
    Оффлайн
    В большинстве случаев - нет. Либо так же, либо даже медленнее, как это ни парадоксально. Причина в том, что современные оптимизирующие компиляторы C++ превосходят по своей квалификации 99,9% программистов.
    Быстрее только в некоторых специфических ситуациях и при условии очень высокой квалификации программиста (низкоуровневая оптимизация под конкретное железо).
    nh2008 нравится это.
  10. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    7.960
    Симпатии:
    1.302
    Репутация:
    50
    Адрес:
    Москва
    Оффлайн
    Конечно, оригинальный Стокфиш был написан на C++. Об этом спора нет. Но потом его алгоритм энтузиасты переписали один-в-один на ассемблере. И получился asmFish и ещё несколько дополнительных вариаций.
    Если есть желание продолжить обсуждение, предлагаю сделать это в "Машинном отделении". Например, в теме "Про воблу".
    Goranflo нравится это.
  11. redhelicopter Новичок

    • Новичок
    Рег.:
    10.11.2014
    Сообщения:
    72
    Симпатии:
    40
    Репутация:
    2
    Оффлайн
    Не совсем верно: компилятор как раз тем и занимается, что перегоняет код на с++ в ассемблерный код. Ускорение при написании на ассемблере происходит за счет того, что можно оптимизировать расход процессорного времени.
  12. nh2008 Учаcтник

    • Участник
    Рег.:
    01.12.2013
    Сообщения:
    1.423
    Симпатии:
    1.093
    Репутация:
    71
    Адрес:
    Украина
    Оффлайн
    Конечно же я понял о чём Вы. Я лишь придрался к формулировке. (Да и почему нет затрат на работу компилятора?)
    Вероятно, Вы хотели сказать, что если и есть идеальная (по быстродействию) программа, то вряд ли её можно написать используя лишь возможности С++ и гарантированно можно написать на ассемблере.

    В указанной Вами теме не нашёл ничего конкретного по программированию, поэтому напишу здесь.
    Есть ещё способ написания программ на ассемблере, когда за основу берётся код программы, написанной на языке высокого уровня. Код этой программы дизассеблируется, а потом из неё удаляется всё лишнее и(или) заменяется на более оптимальный код.
    Sanchessus нравится это.
  13. redhelicopter Новичок

    • Новичок
    Рег.:
    10.11.2014
    Сообщения:
    72
    Симпатии:
    40
    Репутация:
    2
    Оффлайн
    Это оптимизация скорее, а не написание.
  14. ber-viking Учаcтник

    • Участник
    Рег.:
    10.05.2006
    Сообщения:
    1.696
    Симпатии:
    52
    Репутация:
    3
    Адрес:
    Россия, Казань
    Оффлайн
    Все проги работают на машинном (процессорном) коде, Ассемблер - лишь один из языков трансляции алгоритмов на машинный язык. Все зависит от алгоритма. Вы реально считаете, что транслятор хуже понимает, как перевести алгоритм в код чем вы ?
  15. ber-viking Учаcтник

    • Участник
    Рег.:
    10.05.2006
    Сообщения:
    1.696
    Симпатии:
    52
    Репутация:
    3
    Адрес:
    Россия, Казань
    Оффлайн
    Вообще-то разница в интерпретаторе и компиляторе есть. Но программируя только в Бэйсике, этого нифига не поймешь.
  16. DenKor Начинающий

    • Начинающий
    Рег.:
    26.11.2016
    Сообщения:
    8
    Симпатии:
    0
    Репутация:
    0
    Оффлайн
    Уважение программеру
    Мое уважение коллеге, который понимает разницу между компилятором и интерпретатором. И понимает что ассемблер по сути это тоже язык ВУ. В нащ век "программистов 1С" это большая редкость ...
  17. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    7.960
    Симпатии:
    1.302
    Репутация:
    50
    Адрес:
    Москва
    Оффлайн
    Транслятор - такая же программа. Её писали люди, со всеми вытекающими из этого ограничениями. Он точно так же для оптимизации может применять какие-то эвристики, которые в одном случае дают выигрыш, а в другом нет. При сборке он может тащить ненужные зависимости от сторонних библиотек, которые вручную можно было бы устранить. И т.д. Среднего программиста компилятор, конечно, по качеству оптимизации побивает. Но в случае асмФиша речь идёт не о среднем, а о весьма сильном программисте.
  18. Ondatr Учаcтник

    • Участник
    Рег.:
    21.11.2016
    Сообщения:
    153
    Симпатии:
    57
    Репутация:
    4
    Оффлайн
    Хотелось-бы заметить, что скорость работы какой-либо программы складывается из времени собственно ее работы + время потраченное на ее разработку.
    С этим и связана популярность Basic (особенно для продуктов Microsoft) - прикладные системы разрабатываются очень быстро (и, да он компилируемый!).
    Но даже Basic сейчас вытесняется, и чем интерпретатором !:facepalm2:
    Нынче рулит Python, пишут, что все преподавание программирования на Западе, ведется на этом языке.
    Ну не знаю, как на всем Западе, однако на Эйлеровском проекте подавляющее число участников ваяет именно на нем.
  19. ber-viking Учаcтник

    • Участник
    Рег.:
    10.05.2006
    Сообщения:
    1.696
    Симпатии:
    52
    Репутация:
    3
    Адрес:
    Россия, Казань
    Оффлайн
    Ассемблер - язык ВУ ? :cool: "Ну, вы блин даете" (с)
    --- добавлено: 27 ноя 2016, опубликовано: 27 ноя 2016 ---
    Нынешнее семейство трансляторов (не стал зачеркивать - конечно, программ) пишется командами (хотя я видел разную степень этой командности), при этой команде есть саппорт, который выявляет баги - иногда ищешь одну, находишь другую (я, вот недавно в коде Delphi, импортированном видимо из Fox, нашел определение видимости грида в цикле, от итерации независимой - что поможет анализ ассемблера или кода ?).
    Ненужная зависимость от библиотек - это вы о каком ЯП говорите ? В дельфях этого нет с рождения. СПП тащит что ли ?
    Оптимизация - это вещь. Хорошая оптимизация в оракле на порядке ускоряет выполнение, пока дба что-то там не поменяет, не зная о вашей недокументизированной оптимизации
    WinPooh нравится это.
  20. ber-viking Учаcтник

    • Участник
    Рег.:
    10.05.2006
    Сообщения:
    1.696
    Симпатии:
    52
    Репутация:
    3
    Адрес:
    Россия, Казань
    Оффлайн
    "Скорость работы" - что это для вас? Время пользования программой или ее быстродействие?
    "Популярность Basic" - вы этого программерам не говорите, бить не будут, слюны достаточно будет.
    "Рулит Питон" - не все, за что платят, пишется через веб, мой город силен традициями ВПК, я в курсе, что всем требуется, и как сказал один камрад, не в 1С дело, бразе
    WinPooh нравится это.
  21. Ondatr Учаcтник

    • Участник
    Рег.:
    21.11.2016
    Сообщения:
    153
    Симпатии:
    57
    Репутация:
    4
    Оффлайн
    По-моему, я достаточно понятно объяснил про скорость работы какой либо программы.
    То что у программеров слюней много я знаю, но знаю также, что как и у орудий калибр у них разный.
    А вот то, что "дело вовсе не в бобине " (т. е. не в 1С) с этим соглашусь.
  22. ber-viking Учаcтник

    • Участник
    Рег.:
    10.05.2006
    Сообщения:
    1.696
    Симпатии:
    52
    Репутация:
    3
    Адрес:
    Россия, Казань
    Оффлайн
    Хм, а как такая позиция может образоваться.
    Как говорят тестеры, телепаты в отпуске. Логи есть ?
    --- добавлено: 28 ноя 2016 ---
    О, вот как, камрады, куда я попал :hi: "Теория шахматного программирования" :chess:
    Из-за дурацкого вопроса, что ассемблер является ЯВУ?
    Ты смотри, солдат, где теория шахмат, обсуждение "скорости-времени выполнения программ" и Багдад?:kefir:
    --- добавлено: 28 ноя 2016, опубликовано: 27 ноя 2016 ---
    Повторю для Ondatr (чтобы связность не нарушилась)
    Ничего Вы достаточно не объяснили. В один флакон Вы сложили время и скорость. Вы не ответили на первый поставленный мною вопрос (второй и третий снимаю, ибо какой-то ответ получил). В недолетевшем вашем ответе я успел прочитать, про складывание времени. Вы и скорость также скалярно складываете?
  23. ber-viking Учаcтник

    • Участник
    Рег.:
    10.05.2006
    Сообщения:
    1.696
    Симпатии:
    52
    Репутация:
    3
    Адрес:
    Россия, Казань
    Оффлайн
    Ну в принципе, разобрался, откуда там слон. Вот только - чего он туда забрался...
  24. Remes_ Начинающий

    • Начинающий
    Рег.:
    28.11.2016
    Сообщения:
    8
    Симпатии:
    1
    Репутация:
    0
    Онлайн
    Не знаю куда писать, решил начать здесь. Я изобретаю разные шахматные мини игры. Несколько примеров (моих и чужих) тут - https://scratch.mit.edu/studios/1962394/
    Все они предназначены для самых маленьких шахматистов, кто только знакомится с ходами фигур. Посоветуйте, где написать про это, чтоб люди могли протестировать, отзывы оставить, что-нибудь новое предложить?
  25. Nanto Новичок

    • Новичок
    Рег.:
    15.11.2016
    Сообщения:
    23
    Симпатии:
    17
    Репутация:
    0
    Оффлайн
    "Чукча не читатель..."(с)?
    Специально через слэш написал)) Что интерпретатор, что компилятор (этот конечно побыстрее работает) отжирают быстродействие. Как бы ни был хорош С(++, # и т.д.) - ему все равно требуется компилятор и некий обвес в виде стандартных библиотек.
    Ну да ладно, с уровнем "8 класса средней школы" программирования вроде разобрались.
    В контексте же данной задачи, разница вообще несущественная - тут скорее дело в железе и принципах. Кмк, надо смотреть в сторону майнинга, распределенных вычислений, видеокарт и специализированных процессоров (ASIC). И как следствие, получается что для данной задачи лучше всего подходят не Ассемблер или Си, а HDL)))))
    nh2008 нравится это.
  26. nh2008 Учаcтник

    • Участник
    Рег.:
    01.12.2013
    Сообщения:
    1.423
    Симпатии:
    1.093
    Репутация:
    71
    Адрес:
    Украина
    Оффлайн
    "Вылизывание" кода, конечно, хорошо, но нельзя сбрасывать со счетов изменение архитектуры процессоров и сопроцессоров.
    Вот где непочатый край работы.
    --- добавлено: 28 ноя 2016, опубликовано: 28 ноя 2016 ---
    Для решения данной задачи нужны хорошие идеи и алгоритмы. А дальше уже как реализуешь. Ведь оптимизацией или вычислительного процесса или реализации алгоритма может заняться ... искусственный интеллект.
    Почему, если такие системы могут обыгрывать человека в Го, охлаждать суперкомпьютеры, обыгрывать людей в "стрелялки", они не смогут подобрать наилучший вариант кода?
  27. Nanto Новичок

    • Новичок
    Рег.:
    15.11.2016
    Сообщения:
    23
    Симпатии:
    17
    Репутация:
    0
    Оффлайн
    Ну если уж мы полезли в ближнюю фантастику, то тут скорее нужен квантовый компьютер)) Это как раз задача (просчитать позицию) для его специализации.
  28. nh2008 Учаcтник

    • Участник
    Рег.:
    01.12.2013
    Сообщения:
    1.423
    Симпатии:
    1.093
    Репутация:
    71
    Адрес:
    Украина
    Оффлайн
    И такая тема на форуме есть.
  29. Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    38
    Симпатии:
    2
    Репутация:
    1
    Оффлайн
    Мои пару копеек: Жираф это не совсем полностью самообучаящаяся программа. Это стандартная альфа-бета программа, только оценочная функция позиций была натренирована с помощью нейро-сети.

Поделиться этой страницей