169 похожих чатов

Какой объём написанного кода за смену считается нормальным? я, в

силу возраста, не работаю ещё, но работаю над pet-проектами

47 ответов

25 просмотров

главное не объём, а качество. Ты-ж не индус, которому платят за количество строк, ей богу 😁

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
главное не объём, а качество. Ты-ж не индус, котор...

у меня просто за 7 часов выходит ±200 строк (отношение кода к тестам 4:5 примерно). это нормально, или мало?

mb6ockatf-Ширгозиев Автор вопроса
mb6ockatf-Ширгозиев Автор вопроса
UtoECat
давно код пишешь? И как часто?

три года, стартовал с питонов. за первый год написал игру "города", 7к строк и 2к захардкоженных названий городов. потом вебразработка, цсс и гипертекст. рест апи, базы данных, скуэль. постгрес, майскуэль и скулайт (постгрес лучший). параллельно изучал линукс. сейчас у меня сборка на арче (arch btw). bash знаю неплохо, мне хватает (плохо знаю всякие там программы, которые не входят в bash, но используются (awk-grep-rev-прочее) как-то писал плагин на vimscript. вимскрипт - днище. вспоминать про него больно. тогда первый раз услышал про луа. записал себе в планы далее, разработка ботов для discord и telegram. скучно. решил изучить bf, за 4 дня сделал проект на 2к строк (бойлерплейт, вестимо). никак не дойдут руки написать к нему обёртку на баше. далее, прочитал гайд по луа и пришёл сюда (месяц назад). сделал свой модуль, если кратко - завозит всякие функции для работы со строками (типо сплит и пр.) из питона, и функции для покраски вывода stdin с помощью ascii-sequences. он мне нужен, т.к. я буду свой говнокод 1-2 лет переписывать на луа. я тогда сделал много консольных игр первые два года ходил в яндекс лицей. второй год отстой, а за первый нехило знакомишься с алгоритмами. как закончил лицей, регулярно решаю задачи на codewars, чтобы в форме оставаться (если время есть. у нас в школе бальная система, учиться сложно. я на медаль иду). 5 kui в планах: иду в ассемблер, потом си, потом плюсы. хочу попробовать писать малварь, а для этого нужен ассемблер. а плюсы в университете нужны будут

mb6ockatf Ширгозиев
три года, стартовал с питонов. за первый год напис...

> завозит всякие функции для работы со строками (типо сплит и пр.) из питона не думаю, что это хорошая практика. Тебе стоит привыкнуть к стандартным либам и функциям сперва (в этом есть плюс, хотя-бы потому, что luajit лучше будет оптимизироать библиотечные, нежели самописные функции, да и вообще меньше оверхеда) > иду в ассемблер, потом си, потом плюсы уверен, что тебе это надо?

mb6ockatf-Ширгозиев Автор вопроса
mb6ockatf Ширгозиев
я в 10й класс иду. нет

а ну , начнешь работать вопрос закроется сам собой

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
> завозит всякие функции для работы со строками (т...

в моём городе нет вакансий на питоне, а на плюсах есть. не уверен. но я точно не буду учить js и не стану фронтендером. это не моё

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
> завозит всякие функции для работы со строками (т...

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

странно, обычно наоборот. Может плохо искал? 😁 да и ты, как программист, не сильно ограничен выбором места работы, можно и по удалёнке, скорее всего, если поискать.

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
странно, обычно наоборот. Может плохо искал? 😁 да ...

* я искал вакансии без опыта, и полная занятость (без удалёнки) кмк, если первое место работы, то не удалённо

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
напомни что делает split

function mfr.split(str, separator) assert(type(str) == "string", "str argument is string") separator = separator or " " assert(type(separator) == "string", "separator argument must be string") local result, buffer, inside_separator, sep_len = {}, "", 0, separator:len() for i = 1, #str do if inside_separator == 0 then if str:sub(i, i + sep_len - 1) ~= separator then buffer = buffer .. str:sub(i, i) else table.insert(result, buffer) inside_separator, buffer = sep_len - 1, "" end else inside_separator = inside_separator - 1 end end if buffer ~= "" then table.insert(result, buffer) end return result end

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
напомни что делает split

берёт строку и разделитель. возвращает массив строк: оригинальная строка, распиленная по разделителям

UtoECat
screenshot

если нужно, тут тоже можно сделать добавление в таблицу, её возвращать... Но, имхо, проще написать цикл с gsub. Главное не переусложнять вещи 😁 легче будет и интерпретатору, и тебе

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
screenshot

да, так намного лучше...

mb6ockatf Ширгозиев
да, так намного лучше...

в reference manual есть хорошая дока по шаблонам. Надо немного потренироваться, и они станут твоим незаменимым инструментом для решения задлач со строками 😁

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
если нужно, тут тоже можно сделать добавление в та...

function mfr.belongs(element, sequence) assert(type(sequence) == "table", "sequence is table") for i = 1, #sequence do if element == sequence[i] then return true end end return false end для такого есть что-то в стдлибе?

mb6ockatf Ширгозиев
function mfr.belongs(element, sequence) ...

увы нет, но на это есть причина. первая - для отсортированных/не отсортированных и ещё кучи разных массивов есть разные более быстрые способы поиска. Покрыть много ситуаций - сложно. вторая - если значения уникальны, делай обратную таблицу, куда пиши [значение]=индекс. Для поиска просто индексируй эту обратную таблицу, так получишь индекс. Это достаточно быстрый способ что-то найти, если этого чего-то много. Размен памяти на производительность, своего рода 😁 Для небольших-же массивов, хватит и функции, приведённой тобой

mb6ockatf Ширгозиев
function mfr.belongs(element, sequence) ...

ну и в assert поправь сообщение на NOT A table 😁

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
ну и в assert поправь сообщение на NOT A table 😁

так и задумано: вместо "параметр н должен быть у" "параметр н - это у". да, задумка не очень. у меня 20 с лишним ассртов на типы в 1 файле, и везде такой шаблон 😔 я наверное конструктор сделаю для assert messages, чтобы более информативно было

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
ну и в assert поправь сообщение на NOT A table 😁

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

mb6ockatf Ширгозиев
так и задумано: вместо "параметр н должен быть у" ...

только учти, что этот конструктор будет вызываться даже, если assert не сработает. а вообще, ассерты нужны не сильно часто. Сам код выдаст ошибку, если что-то будет не так. Менее понятную, но всё-же. Их хорошо на стадии отладки использовать, а потом понемногу убирать (особенно, если этот код вызывается достаточно часто)

mb6ockatf Ширгозиев
можно спросить кое-что? у меня есть длинная строк...

покажи-ка кодом, а то я что-то не понимаю немного

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
только учти, что этот конструктор будет вызываться...

я библиотеку делал, там желательно нормальные ошибки показывать. подход "лишний раз проверь", а не pcall и пр.

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
покажи-ка кодом, а то я что-то не понимаю немного

https://pastebin.com/n4Cm656z например, я тут tabulation в отдельную переменную вынес, и использовал её только в 1 месте

mb6ockatf-Ширгозиев Автор вопроса
mb6ockatf Ширгозиев
https://pastebin.com/n4Cm656z например, я тут tab...

эта функция из таблицы делает удобочитаемую строку

mb6ockatf Ширгозиев
https://pastebin.com/n4Cm656z например, я тут tab...

ааа... То, что кешируешь string.rep() - правильно. это всё ещё си функция, и лишние затраты на её вызов и повторное создание такой-же строки - не очень, хоть и не критично.

mb6ockatf Ширгозиев
можно спросить кое-что? у меня есть длинная строк...

если локальная переменная - норм. пока это помогает читабельности - тем более. ванильная луашка в оптимизацию всего этого во время компиляции в байткод - не оч. luajit получше, можно меньше заморачиваться, но всё равно.

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
если локальная переменная - норм. пока это помога...

понял, спасибо вам. потрогую как нибудь luajit. он не влияет же на синтаксис языка, просто компилятор?

UtoECat
если локальная переменная - норм. пока это помога...

про оптимизацию я имею в виду кеширование результата предыдущих вычислений, если что. Пока это в одном стейтменте, ака 20 + 10 / 3 или "abab".."zazaza" - оптимизирует

mb6ockatf Ширгозиев
понял, спасибо вам. потрогую как нибудь luajit. он...

немного влияет, он добавляет некоторые фишки из lua 5.2 и 5.3, но не все, на уровне сохранения обратной совместимости с 5.1

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
немного влияет, он добавляет некоторые фишки из lu...

у меня 546 луа, луажит добавит что-то, что раньше из языка убрали?

mb6ockatf Ширгозиев
у меня 546 луа, луажит добавит что-то, что раньше ...

нет. Он поддерживает всё, что было в lua 5.1, добавляет некоторые фишки из новых луашек, но не все. например, в luajit до сих пор только getenv() setenv(), так как это функции из 5.1. Ни о каких local _ENV и речи быть не может

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
немного влияет, он добавляет некоторые фишки из lu...

слышал про nelua. он в некоторых тестах быстрее си - вот тут писали https://t.me/ProLua/103259

mb6ockatf Ширгозиев
слышал про nelua. он в некоторых тестах быстрее си...

ну... nelua довольно сильно от ванильной луашки отличается вроде как. Я им никогда не пользовался, luajit, ванильная луашка и luau - максимум 😁 к слову о luau - она бысрее ванильной луашки, там быстрее создание и сборка объектов (только на этом она обгоняет luajit), там есть дополнительные жёсткие оптимизации во время компиляции и выполенния без jit и с сохранением практически полной кроссплатформенности (будет работать везде, куда можно скомпилироввать C++17), но она СОВЕРШЕННО не совместима со всеми луашными либами (как и nelua, как я думаю), и это её главный недостаток. ну и для того, чтобы обеспечить работу оптимизации на этапе компиляции байткода, надо гарантировать неизменяемость _G, что ломает очень много кода, его надо переделывать

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
ну... nelua довольно сильно от ванильной луашки от...

можно спросить, а вы по профессии на чём пишете?

mb6ockatf Ширгозиев
можно спросить, а вы по профессии на чём пишете?

та я по профессии вообще не программист 😁 так сишку/плюсы и луашку использую в основном.

mb6ockatf-Ширгозиев Автор вопроса
UtoECat
та я по профессии вообще не программист 😁 так сиш...

си сложный? я как-то пробовал его поучить. взял кёрнигхан / ричи, потом сказали - нехорошее чтиво. пробовал по видеоурокам, сломался на указателях. вернее, пытаюсь своё написать, он ошибками плюётся, гуглю - надо указатель передавать в аргументе... почему, индиец же просто переменную передавал? потом в bf уже допёрло, что это за указатели (весь bf это один большой указатель, который ползает по памяти 🙂)

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Good afternoon, I just started learning php in conjunction with mysql. I am registering a system on a local Mamp server using phpMyAdmin. It seems to be stored normally in the...
ManGo
1
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Добрый день! Такая проблема возникла, написал код на Python, который компилирует, собирает и запускает файлы .s А в случае работы нужно то же самое делать для .asm Чем эти фа...
A Mori
5
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Карта сайта