it-юмор :: программирование :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

программирование geek it-юмор 
программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,it-юмор
Подробнее

программирование,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,it-юмор
Еще на тему
Развернуть
Вообще интересно что подразумевается под competitive programming. Если что-то из разряда спортивного программирования то питон - странный выбор. Производительность у него никакущая. Обычно паскаль или c++ выбирают.
gelios gelios 09.07.202109:21 ответить ссылка 0.6
Можно соревноваться в формате "кто больше отступов наебенит за время". И продавать клавиатуры с огрооомным спортивным табом
питон в этом плане очень читаем, особенно если код чужой
Regm Regm 09.07.202109:42 ответить ссылка -1.9
Я люблю питон, не совсем понимаю смысла такого спорта, но если парням нравится - им нужны спортивные табы, полюбасу
А что, идея для стартапа. Еще выпустить серию со спортивным капсом для SQLщиков
nevm nevm 09.07.202111:57 ответить ссылка 0.7
Педаль с табом, а лучше две.
Не соглашусь, пока кто-то будет воевать на плюсах с нулл поинтерами и нечитаемыми шаблонами, кто-то другой на питоне уже напишет всю математику и тесты. А переписать готовый питон на раст, паскаль или фортран это уже дело механики.
Si1ver Si1ver 09.07.202110:13 ответить ссылка 1.9
Сейчас может спортивное программирование поменялось. И резко начали писать шаблоны. Раньше, по-крайней мере когда я этим активно занимался, всякие вещи типа чтения из файла, выделения памяти под массив и прочего - было доведено до автоматизма у людей, которые писали под плюсы хотя бы больше пары месяцев. Поэтому непосредственно с кодом никто не сражался.
gelios gelios 09.07.202110:19 ответить ссылка 1.5
Тратить цпу на компиляцию шаблонов перед рантоймом или писать без шаблонов и тратить цпу в рантайме? Думаю, для "спортивного" программирования выбор очевиден. Ну и это, какое чтение файлов-то в спортивном программировании?
Si1ver Si1ver 09.07.202110:24 ответить ссылка 1.1
В сях не сильно шарю, так что не знал про такие подробности. Плюсы трогал уже только в универе, и то, на уровне троечника. Чтение/запись файлов input.txt/output.txt (обычно) - на всех уровнях от школьного до республиканского. Плюс такая же тема была и на USACO. Встраивание кода участника как модуля - было редкостью 11 лет назад.
gelios gelios 09.07.202110:43 ответить ссылка 0.3
В школе были файлы, а всякие кодфорсес и прочие ICMP - там stdin/stdout.
В школе, в универе на всяких acm icpc были файлы. Codeforces я особо не трогал, он в те времена не особо популярен был.
gelios gelios 09.07.202112:33 ответить ссылка 0.0
Эт да, я не молод, но как-то файлы не застал вообще, либо стд либо модули. Думал, товарищ гелиос о бенчмарках пишет.
Si1ver Si1ver 09.07.202117:22 ответить ссылка 0.0
Отстал от жизни. Опыт олимпиадного программирования небольшой, но шаблоны как-то не особо юзались. Всякая дичь из библиотеки и велосипеды. В основном, упор на алгоритмы, чтоб асимптотическая сложность не была жуткая.
Что ты там оптимизировать собрался в рантайме шаблонами? Эти всякие константные вычисления в рантайме, если надо - заменяются предподсчетом. Отдельная программа считает числа, они потом копипастятся в исходник. Гораздо быстрее чем писать эти шаблоны. И исходник меньше размером, что тоже важно - там же ограничения на размер есть.

А основная польза от шаблонов - переиспользование кода - в олимпиадах вообще не нужна. Поэтому шаблонами никто и не пользуется особо.
wataru wataru 09.07.202112:36 ответить ссылка -0.1
гугл в помощь
Si1ver Si1ver 09.07.202117:16 ответить ссылка 0.0
Нет уж, гугл найдет 100500 абстрактных примеров использования шаблонов, ни один из которых не применим на олимпиадах. Еще раз - вместо константного шаблонного вычисления быстрее и проще подсчитать "руками" и вставить в код константу число. В промышленном программировании это плохо, потому что нечитаемо, но на олимпиадах немного другой сеттинг.
wataru wataru 09.07.202117:36 ответить ссылка 0.0
Мужииииик, метапрограммирование потому и метапрограммирование, что на нем, ну знаешь, можно программировать программирование, а не только константы считать.

Два конкретных примера (пруфов не будет, делать мне нечего кроме как все выходные тратить чтобы ты статейки с десятой страницы гугла мог почитать =) ):

Была статья на хабре про mlpack, может с пару месяцев назад, почему его предикторы на порядок быстрые других. Ответ: очень много колдунства с темплейтами, например все сортировки и поиски в матрицах написаны на них, компилируется все конечно под десяток часов, зато на выходе весь код заинлайнен, циклы развернуты, вектора для ссе собраны.

Другой пример из личного бложика какого-то хрена, читал год наверное назад. Задача такова: доска 9 на 9, на най играют твои и бот противника, время хода конечно ограниченно, рекурсивный поиск в ширину. Как перейти из топ 100 в топ 10? Продолжать поиск в щирину, но рекурсию в глубину нашаблонить чанками по ~10 уровней. Суть как и в первом случае, когда у тебя и противника уже код на пределе и идет нос в нос, выигрыш от инлайна и отсутствия "дорогих" вызовов рекурсии сразу дает тебе преимущество.
Si1ver Si1ver 10.07.202104:08 ответить ссылка 0.0
Но на олимпиаде, где для скорости вместо vector используют макрос vi для скорости и подобные выкрутасы писать эти шаблоны никто нн будет.
wataru wataru 10.07.202111:23 ответить ссылка 0.0
Нннуууу, в начале ветки разговор был о спортивном программировании, я о нем и писал все время (HackerRank, ICMP, Codingame, AI Cup). Упустил момент что ты только о олимпиадах пишешь. На олимпадах ясен хрен никаких шаблонов не надо, клавиши не выковыривают-- уже считай приз зрительских симпатий пора выдавать =)
Si1ver Si1ver 10.07.202114:48 ответить ссылка 0.0
Я про всякие acm icpc, ioi, codejam и т.д. там ограничено время на решение задач.
wataru wataru 10.07.202115:01 ответить ссылка 0.0
Если под "спортивным программированием" подразумеваются всякие олимпиады, то там язык вообще не имеет значения. Решает не производительность твоего решения, а то, с какой скоростью ты его написал.

Паскаль уже никто не выбирает. В некоторых олимпиадах он вообще исключен из списков допустимых языков, благодаря чему я, в свое время, и перешел на плюсы. А вот пайтон практически везде был актуален, еще до того, как о нем начали дудеть из всех щелей. К тому же, насколько мне известно, он вообще может юзать сишные библиотеки, благодаря чему, если грамотно описать алгоритм, то разница в производительности будет отсутствовать совсем.
Нет! Можно очень быстро накатать наивный метод и не получить ничего из-за time limit (или мнимальные балы, в зависимости от системы оценки).

Во-первых, решение должно работать быстро и правильно. Во-вторых, надо написать его как можно быстрее. Что бы успесть решить больше задач, или получить больше очков (зависит от системы оценки).

Сейчас уже лучше балансируют тесты и ограничения, но лет 10 назад часто имело смысл переписать решение с Java на C++, если оно чуть чуть не проходит по времени.
wataru wataru 09.07.202118:33 ответить ссылка 0.0
Верю, хоть и не сталкивался. Сталкивался с тем, что неоптимальный алгоритм даже на плюсах при больших значениях, которые идут в тестах, стремиться к бесконечности.
Я чаще сталкивался с ситуациями когда человек пару часов ебался с одной простой задачей, ища в ней подвох, а в итоге можно было все сделать "в лоб".

А у джавы с плюсами в основном разница в использовании памяти, а не во времени. Не знаю как последние редации плюсов, но JVM оптимизирует все, благодаря захватыванию большего количества оперативы (главная причина почему байтоебство на джаве бессмысленно и беспощадно).
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
Newbie: So which programming language should I learn first?
Programmers: Почему?
Почему?!
^>о->Ьаг() — Почему?



— А, вот почему... code comments be like
***i-*-S^l Ребят, ,вы переписыываете.