|
|
|
Железный канал: «Вопросница #2» |
|
|
Grebomet
1466 EGP
      Рейтинг канала: 8(759) Репутация: 261 Сообщения: 4787 Откуда: Питербурх Зарегистрирован: 06.01.2003
 |
|
BlackCat : |
И я вот не вижу связи скобочек и говнокода, ну вообще никакой.
|
Связь очевидная: имея скобочки, некоторые говнокодеры впихивают в одну строку невпихуемое (т.е. не связанное по смыслу), благо синтаксис это позволяет.
Замена скобочек отступами фактически запрещает такие вещи (ну, почти). Эффективность сего приема - под вопросом. По народным поверьям, приучает неофитов писать структурированный код.
BlackCat : |
Говнокод можно писать абсолютно на чём угодно. И на питоне его написано очень и очень много. Очень даже может быть, что намного больше, чем на перле.
|
Выдаешь желаемое за действительное.
Есть языки, на которых говнокод получается искаропки, и чтобы испечь что-то приличное, нужно приложить усилия. К таким языкам относится и перл.
А есть языки, в которых для получения говнокода нужны определенные скиллы. Вот в питоне, например, надо еще постараться, чтобы наиндусятничать.
BlackCat : |
А питон же позиционируется, как "простой и лёгкий язык для всех" со всеми вытекающими...
|
Наличие большого количества школия, юзающего и абьюзящего язык, еще не означает, что он плох. В стандартной библиотеке питона все давно уже стабильно и красиво, а поделия школьников ты можешь со спокойной совестью проигнорировать.
Diff : |
Есть еще ниша скриптов на 50 строк, в которую баш лучше не тащить. Учитывая что в 90% случаев это задачи что-то распарсить - перлу тут конкурентов нет.
|
Это и есть, фактически, узкая перловая ниша.
Раньше на нем еще CGI-скрипты писали, но уже давно не.
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
Diff
708 EGP
      Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Grebomet : |
Раньше на нем еще CGI-скрипты писали, но уже давно не.
|
Вот вы будете смеяццо - только час назад назад закончил скрипт выдающий по номеру геррит-тикета набор тестов покрывающих затронутый код и положил в cgi-bin .
_________________ Конец света в конце тоннеля |
|
|
BlackCat
200 EGP
  Рейтинг канала: 3(44) Репутация: 18 Сообщения: 2193 Откуда: г. Минск, Республика Беларусь Зарегистрирован: 28.11.2006
 |
|
Grebomet : |
Связь очевидная: имея скобочки, некоторые говнокодеры впихивают в одну строку невпихуемое (т.е. не связанное по смыслу), благо синтаксис это позволяет.
Замена скобочек отступами фактически запрещает такие вещи (ну, почти).
|
Это каким же волшебным образом, позвольте?
А структурировать код я своих студентов приучаю на первых же лабораторных. Ибо нечитаемая дрянь получается и я просто отказываюсь помогать им, пока они не приведут код в порядок. Максимум 2 лабораторки и они код уже структурируют. А уж если пойдут работать, так там их быстро СТП приучит.
Grebomet : |
Выдаешь желаемое за действительное.
|
Первый год попыток освоить питон плодили чудовищный говнокод, который у меня в перле получился только один раз и то, только потому, что лень было большую и сложную регулярку писать, ибо для внутреннего потребления, а мне и так сойдёт.
Grebomet : |
Наличие большого количества школия, юзающего и абьюзящего язык, еще не означает, что он плох. В стандартной библиотеке питона все давно уже стабильно и красиво, а поделия школьников ты можешь со спокойной совестью проигнорировать.
|
Тоже самое можно и про перл сказать. Особенно с учётом того, что на нём не каждый решиться программить. Хотя язык довольно простой и понятный, имхо. Только регулярки его портят. Но без них не так лаконично получается.
_________________ Я циник, эгоист, мизантроп, социофоб, пофигист, скептик! Одним словом - Няшка. :) |
|
|
Diff
708 EGP
      Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
BlackCat : |
я своих студентов приучаю
|
Ну так обучать стоит денег. А мечта рынка - забесплатно получить много говнокодеров которые будут писать структурированный код. Подход Го на который я ругался выше - следующуя ступень этой эволюции.
BlackCat : |
Только регулярки его портят
|
Без них в нем смысла нет чуть более чем совсем.
BlackCat : |
простой и понятный
|
Расскажи про функцию bless так, чтобы za4ot понял и постиг.
добавлено спустя 10 минут:
и в чем глубинный смысл единички в конце каждого модуля.
_________________ Конец света в конце тоннеля
Последний раз редактировалось: Diff (22:56 17-03-2016), всего редактировалось 1 раз |
|
|
za4ot
524 EGP
     Рейтинг канала: 5(130) Репутация: 17 Сообщения: 3549 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012
 |
|
Diff : |
Расскажи про функцию bless так, чтобы za4ot понял и постиг.
|
Мне бы Tk к DWIMPerl прикрутить, а вы сразу классы, объекты, методы. Эх, буду писать консольные программы.
добавлено спустя 2 минуты:
Пока Убунту не поставлю.
_________________ Пираты - наше всё!
Последний раз редактировалось: za4ot (23:43 17-03-2016), всего редактировалось 1 раз |
|
|
Diff
708 EGP
      Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Pentium II, Ельцин, спирт "Рояль", бакс по шесть рублей.
_________________ Конец света в конце тоннеля |
|
|
BlackCat
200 EGP
  Рейтинг канала: 3(44) Репутация: 18 Сообщения: 2193 Откуда: г. Минск, Республика Беларусь Зарегистрирован: 28.11.2006
 |
|
Diff : |
Ну так обучать стоит денег. А мечта рынка - забесплатно получить много говнокодеров которые будут писать структурированный код. Подход Го на который я ругался выше - следующуя ступень этой эволюции.
|
Ну это уже глобальная структурная беда всего мира. И это касается не только программинга. Я, лично, вижу только одно глобальное решение - стереть человечество с лица Земли.
Diff : |
Без них в нем смысла нет чуть более чем совсем.
|
Не скажите. Скрипты для люниха получаются вполне себе кошерными и без регулярок. Хотя не буду отрицать, что с ними лаконичнее и, зачастую, проще. Но мне доводилось пользовать регулярки и в других языках. Если они уместны и облегчают жизнь, то не важно - какой язык.
Лирическое отступление: Мне вот очень понравилось в перле работать с SNMP. А потом данные в шаблон html засовывать. Быстро, просто, удобно.
Diff : |
Расскажи про функцию bless так, чтобы za4ot понял и постиг.
|
Це ж ООП. Тьфу на вас, нечистая сила.
Нет, я могу ООП и на асме реализовать, но зачем?
Cкрытый текст (кликните здесь для просмотра)
Если просто и грубо - bless позволяет любую функцию (а точнее хэш её переменных) превратить в класс. И даже функцию, использующую bless-нутый класс позволяется превратить... тоже в класс. Таким образом от функций программист на перле ненавязчиво и просто переезжает на объекты. Однако при этом остаётся возможность пользовать новообразованные классы как простые функции.
По сути своей - костыль перехода от функционального программирования к богомерзкому ООПу.
|
Diff : |
и в чем глубинный смысл единички в конце каждого модуля.
|
Вы про
?
Или его сокращённую запись, где оставляется только одна цифирка с точкой с запятой? Так это код выхода из скрипта. Он необязателен в таком применении, кстати. Но желателен, ибо позволяет точно определить время окончания работы скрипта. Что крайне полезно при запуске скриптом скрипта.
А вообще обычно коды выхода задаются разные. Гляньте скрипты того же nagios'а - станет понятнее. Там разные коды выхода сигнализируют о разных состояниях отработавшего скрипта. Т.е. отработал он с ошибкой, варнингом или нормально. Это тоже удобно - быстро (реально - очень-очень быстро) прочитать состояние скрипта и в зависимости от этого уже что-то _начать_ делать (например вызвать другой скрипт). И уже потом только можно получить безразмерную простыню данных, которые должен выплюнуть скрипт. Как мне кажется - это наследие медленного интернета.
добавлено спустя 59 секунд:
za4ot : |
Мне бы Tk к DWIMPerl прикрутить
|
Ммм, а точно нужен именно Tk ?
_________________ Я циник, эгоист, мизантроп, социофоб, пофигист, скептик! Одним словом - Няшка. :)
Последний раз редактировалось: BlackCat (00:02 18-03-2016), всего редактировалось 1 раз |
|
|
бухой джедай
183 EGP
  Рейтинг канала: 4(87) Репутация: 70 Сообщения: 7906 Предупреждений: 1 Откуда: Одесса:) Зарегистрирован: 08.09.2007
 |
|
Diff : |
Я это немного потыкал палочкой. Питоновскую моду держать программиста за говно он поднял на новую высоту. Неотключаемые даже на время отладки ошибки Declared and never used - это лютый пц и издевательство над здравым смыслом. "Вы законченное быдло и общаться с вами можно исключительно пи$дюлями" - примерно таков посыл этого замечательного языка.
Решил что погодю на нем что-то делать.
|
объявление приватности публичности регистром значит понравилось ?
или интерфейсность по наличию методов например ...
добавлено спустя 1 минуту:
Diff : |
Подход Го на который я ругался выше - следующуя ступень этой эволюции.
|
а его гуглочи для этого и придумали чтоб брать рукозадых и ультимативно ставить в позу ...
_________________ Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист...
Последний раз редактировалось: бухой джедай (00:07 18-03-2016), всего редактировалось 1 раз |
|
|
Grebomet
1466 EGP
      Рейтинг канала: 8(759) Репутация: 261 Сообщения: 4787 Откуда: Питербурх Зарегистрирован: 06.01.2003
 |
|
BlackCat : |
Или его сокращённую запись, где оставляется только одна цифирка с точкой с запятой? Так это код выхода из скрипта.
|
Боюся, Дифф про модули и магическую строчку "1;" в конце каждого перлового модуля.
А если в модуль вставить exit 1, то благодарные пользователи быстро прибегут к автору с вилами и лопатами - делать массаж лица.
BlackCat : |
Ммм, а точно нужен именно Tk ?
|
В перле других портабибельных окошек нету.
_________________ Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов. |
|
|
Diff
708 EGP
      Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Если вы пишете на перле и вам нужны окошки - 100% вы что-то делаете не так.
_________________ Конец света в конце тоннеля |
|
|
BlackCat
200 EGP
  Рейтинг канала: 3(44) Репутация: 18 Сообщения: 2193 Откуда: г. Минск, Республика Беларусь Зарегистрирован: 28.11.2006
 |
|
Grebomet : |
Боюся, Дифф про модули и магическую строчку "1;" в конце каждого перлового модуля.
|
Так то ж те же яйца, только вид сбоку.
Grebomet : |
В перле других портабибельных окошек нету.
|
А, точно, о перле ж речь. А меня уже на питон переклинило, звиняйте.
добавлено спустя 37 секунд:
Diff : |
Если вы пишете на перле и вам нужны окошки - 100% вы что-то делаете не так.
|
Согласен. Ncurses наше всё.
_________________ Я циник, эгоист, мизантроп, социофоб, пофигист, скептик! Одним словом - Няшка. :)
Последний раз редактировалось: BlackCat (00:35 18-03-2016), всего редактировалось 1 раз |
|
|
za4ot
524 EGP
     Рейтинг канала: 5(130) Репутация: 17 Сообщения: 3549 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012
 |
|
Diff : |
Если вы пишете на перле и вам нужны окошки - 100% вы что-то делаете не так.
|
Или пишите что-то не то, что обычно пишут на перле.
_________________ Пираты - наше всё! |
|
|
AnrDaemon
864 EGP
        Рейтинг канала: 8(796) Репутация: 37 Сообщения: 12322
Зарегистрирован: 17.10.2004
 |
|
Diff : |
примерно таков посыл этого замечательного языка.
|
Таки чего вы ожидали от гугла?…
добавлено спустя 16 минут:
Grebomet : |
BlackCat : |
И я вот не вижу связи скобочек и говнокода, ну вообще никакой.
|
Связь очевидная: имея скобочки, некоторые говнокодеры впихивают в одну строку невпихуемое (т.е. не связанное по смыслу), благо синтаксис это позволяет.
Замена скобочек отступами фактически запрещает такие вещи (ну, почти). Эффективность сего приема - под вопросом. По народным поверьям, приучает неофитов писать структурированный код.
|
А так же задаёт предпосылки для увлекательной игры "угадай таб или два пробела"…
(Ref: YAML)
Структурированный код получается, когда в коде есть структура, а не когда отступы лесенкой.
P.S.
"require": {"php-64bit": "^7"}
_________________ Люблю свободный полёт... :)
Последний раз редактировалось: AnrDaemon (07:14 18-03-2016), всего редактировалось 1 раз |
|
|
Diff
708 EGP
      Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
BlackCat : |
мне доводилось пользовать регулярки и в других языках.
|
Угу.
Код: |
pattern.create()
pattern.compile()
pattern.match()
|
вместо /$pattern/
Очень вдохновляет.
BlackCat : |
могу ООП и на асме реализовать, но зачем?
|
Затем что модули делающие перл претендующим на универсальность - объектные. С волками жить - по-волчьи и питаться.
добавлено спустя 29 минут:
AnrDaemon : |
Таки чего вы ожидали от гугла?
|
Честно говоря, чего-то более вменяемого. Хотя мне как-то пришлось залезть в код андроида, после чего кое-какие иллюзии могли бы и пропасть.
Искал как поменять IP на котором андроид поднимает хотспот, в итоге нашел чудесное
Код: |
ifcg.setLinkAddress(new LinkAddress(
NetworkUtils.numericToInetAddress("192.168.43.1"), 24));
ifcg.setInterfaceUp();
|
_________________ Конец света в конце тоннеля
Последний раз редактировалось: Diff (13:04 18-03-2016), всего редактировалось 1 раз |
|
|
Diff
708 EGP
      Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
Задачка.
Имеется матрица MxN из единиц и нулей. Типа такой.
Надо удалить из нее максимальное количество строк так, чтобы не увеличить количество нулевых столбцов.
Что-то я не соображу не только с какой стороны к этому подойти, но и куда постить - сюда или в вопросы по математике.
Количество строк - полторы тысячи, столбцов - полтора миллиона.
_________________ Конец света в конце тоннеля |
|
|
AnrDaemon
864 EGP
        Рейтинг канала: 8(796) Репутация: 37 Сообщения: 12322
Зарегистрирован: 17.10.2004
 |
|
Надо удалять строки так, чтобы в каждом столбце оставалось минимум по одной единице.
_________________ Люблю свободный полёт... :) |
|
|
za4ot
524 EGP
     Рейтинг канала: 5(130) Репутация: 17 Сообщения: 3549 Откуда: Яма Изобилия Зарегистрирован: 08.08.2012
 |
|
Diff : |
Надо удалить из нее максимальное количество строк так, чтобы не увеличить количество нулевых столбцов.
|
Фигли тут думать. Считаешь количество нулевых столбцов (я полагаю где все значения равны 0), удаляешь строку, считаешь снова, если количество увеличилось, то восстанавливаешь строку на место и удаляешь следующую. Так перебираешь все строки. Элементарно.
Последний раз редактировалось: za4ot (20:58 18-03-2016), всего редактировалось 1 раз |
|
|
Diff
708 EGP
      Рейтинг канала: 8(861) Репутация: 44 Сообщения: 4179 Откуда: Сферическая Земля в вакууме. Зарегистрирован: 04.07.2003
 |
|
AnrDaemon : |
Надо удалять строки так, чтобы в каждом столбце оставалось минимум по одной единице.
|
Это определение ненулевого столбца .
za4ot : |
Фигли тут думать.
|
Увы, думать надо. Представь что первая строка вся из единиц и достаточно было бы оставить ее одну. А ты ее уже удалил на первом шаге и остался с тысячей неперекрывающихся строк.
_________________ Конец света в конце тоннеля |
|
|
RXL
159 EGP
   Репутация: 23 Сообщения: 678 Откуда: Russia/Moscow Зарегистрирован: 27.05.2007
 |
|
1. Подсчитать количество единиц в каждой строке и отсортировать строки по убыванию.
2. temp = row[0]
3. for n in 1 .. temp.length - 1:
3.1. Если побитный AND row[n] с инверсным значением temp равно нулю, строку можно выкинуть.
3.2. temp = temp | row[n]
Возможна оптимизация п.1: найдя самую единичистую строку вычислить с ней значение из п.3.1 для каждой строки и это уже использовать как ключ сортировки.
_________________ ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Последний раз редактировалось: RXL (21:08 18-03-2016), всего редактировалось 2 раз(а) |
|
|
Minx
1011 EGP
        Рейтинг канала: 2(19) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Diff : |
Что-то я не соображу не только с какой стороны к этому подойти, но и куда постить - сюда или в вопросы по математике.
|
Явно вопрос по программированию, что правда, не мешает его отнести к дискретной математике (;
В лоб решается задача рекурсивно.
Т.е. функция rec имеет на вход один параметр - твой массив строк. Возвращает число N - кол-во удаленных столбцов.
Код: |
rec( array )
{
max_result <- 0
перебрать все строки (i)
{
если можно удалить строку (i), то
{
удалить её
array_cut <- array без строки i
и запустить рекурсию для подзадачи
result <- rec( array_out ) + 1
max_result <- max ( max_result, result )
}
return max_result
}
main()
{
result <- rec( array )
} |
Работать будет наверняка, но скорее всего долго. Поэтому в ход идут эвристики обрезания и ускорения. Например, информацию о "если можно удалить строку (i)" можно посчитать один раз для всех подзадач и передавать ниже. Или, сразу отсекать одинаковые строки. Или, отсекать если уже не может быть получен результат выше max_result. Или, грохнуть столбцы с одинаковыми числами. И т.д.
В общем случае перебор очень большой (1500!) и для его сокращения (если хочется самого лучшего ответа) нужно оптимизировать исходя из характеристик данных.
_________________ μηδείς αγεωμέτρητος εισίτω
Последний раз редактировалось: Minx (21:23 18-03-2016), всего редактировалось 2 раз(а) |
|
|
|
|
|
Железный канал: «Вопросница #2» |
|