|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Бывают дни, когда хочется поразмышлять
Бывают дни, когда хочется поразмышлять о том о сем...
Вот и сегодня забрел я на хабр и увидел интересную статью http://habrahabr.ru/post/148425/ Порадовался что есть еще люди которые трезво смотрят на мир. действительно, новомодные веяния программирования в последние годы зашкаливают. Создается впечатление, что умышленно заводят ИТ-отрасль в тупик. Подрастает поколение, которое только и может программить: Код:
data.sort(superarray) Далее, переходя по ссылкам, нашел: PHP код:
Эта Владимирская директор НR агенства, вот она ищет кадры. А вам не страшно? Мне стало страшно, от мысли каких она безопасников найдет... Последний раз редактировалось Konrad, 25.07.2012 в 19:37. |
#2
|
||||
|
||||
Да уж, ужасно.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
Цитата:
PHP код:
http://www.confreaks.com/videos/550-...re-engineering |
#4
|
||||
|
||||
Каждый язык хорош под свои задачи.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
||||
|
||||
Цитата:
Не будем сейчас обсуждать классы для которых можно задать функцию сортировки, нет смысла. Руби я конечно не знаю. Если я правильно понял код, то из строки выбираются числа, из них формируется целое, которое затем сравнивается. Если все так, то добавим в список вот такую строку: Цитата:
Так что Pyro, могу вам сказать следующее ЗЫЖ Ничего личного. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#6
|
||||
|
||||
К сожалению чем больше компания, тем больше тратится денег непонятно на что.
Проекты раздуваются до неимоверных размеров. Берутся новомодные решения, оплачивается работа консультантов. А в итого получают проект, в котором ошибки как "деление на 0".(видел реальный пример, исправили конечно, но сам факт говорит о качестве проделанной работы). И эти новомодные тренды превращаются в выкачивание денег заказчика, который зачастую не сильно отриентируется в вопросе. П.с.:Я не против всяких там новомодных рельс и т.д. Но вырастает поколение прогероов которые простые задачи, которые раньше на коленке в два счета решались, раздувают до неимоверных величин. Беда еще в том, что эти все новомоджные веяния с точки зрения ИБ - непаханное поле для злоумышленника. Все это нужно проверить, перепроверить, пока пройдет время, пока найдут все дыры, появиться суперруби, и опять все по новой... |
#7
|
|||
|
|||
Цитата:
тоесть, из каждой строки выбираются все числа в массив, и на основе таких массивов сортируются строки, и 8D1 встал между 8D и 9M , а вобще если вынести оттуда функцию, то сам вызов выглядел бы так: Цитата:
Последний раз редактировалось Pyro, 26.07.2012 в 08:04. |
#8
|
||||
|
||||
Знаете, мне как-то всегда было глубоко паралельно на хабр.
Читаю там заголовки восновном в теме ИБ. Но уровень таких статей ниже плинтуса... PHP код:
посты Лучшие За всё время PHP код:
Это их дело что они пишут, другое дело что мнят о себе админы. решил присмотреться, и вот почитал у них о карме, условиях публикации статей и т.д. http://lurkmore.to/Хабр : Цитата:
И вот тут задумался... И вот что хочеться написать тут всем, кто считает себя специалистом хотя бы в маааленькой отрасли: Имейте гордость в интернете. Никакая карма и никакая популярность ни на каком сайте интернета не даст вам знаний. Будь вы в топе хабра не хабра, это ничего не значит. Значат только ваши знания и умения делать что-то стоящее, и только они что-то значат. Помогаю платно. Помогаю иногда бесплатно. |
Этот пользователь сказал Спасибо @Rafa3L за это полезное сообщение: | ||
OTVET (18.01.2013)
|
#9
|
||||
|
||||
Сoвременные веяния программирования это конечно круто, но они сопутсвовали появлению целого поколения говнокодеров...
Как-то на днях нужно было мне написать на морзянке пару слов... Чтобы не писать самому программу зашел в гугл и набрал "морзе онлайн". На первом сверху сайте перевел что нужно. На этом бы все и закончилось. Но мне стало интересно, а как они реализовали решение задачи. http://live.mephist.ru/show/morze/ Летопись МИФИ - Московский инженерно-физический институт И вот вытащил саму функцию: PHP код:
Разбирать код не советую, ибо чревато раком мозга. Краткая суть реализации. Есть 2 таблицы var symbols = new Array('а','б','в','г','д',.... алфавит var codes = new Array('12','2111','122','221','211','1','1','1112' ,'2211','11' собственно код А где точки и тире спросите вы? А вот они спрятаны: var morze_display = new Array(32,183,8211); пробел, . , - Потом кодируем PHP код:
А что? Чтобы быстрее работало. А дальше последовательность вида 2211211221212112 преобразовываем в точки и тире PHP код:
В чем же ошибка автора: Он не полностью следует современным веяниям. Нужно: - Кнопки лайк фесбука. - Возможность оправлять вконтакт. - Обязательно заходить через АйХрень. - Обязательная кнопка - поделится с друзьями. - Обязательное отображение координат, чтобы сидя в туалете поезда Пенза-Копейск среди ночи постить код морзе в Твиттер. Пример того как из простого сделать сложное. Delphi Есть несколько вариантов более менее человеческой реализации. Код:
const morzetabl:array[0..255] of string[10]=('','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','', '_···_ ','__··__ ','·_··_· ','','','','','','_·__·_ ','_·__·_ ','','','·_·_·_ ', '_····_ ','······ ','_··_· ','_____ ','·____ ','··___ ','···__ ','····_ ','····· ', '_···· ','__··· ','___·· ','____· ','___··· ','_·_·_· ','','','','··__·· ', '·__·_· ','·_ ','_··· ','_·_· ','_·· ','· ','··_· ','__· ','···· ','·· ','·___ ', '_·_ ','·_·· ','__ ','_· ','___ ','·__· ','__·_ ','·_· ','··· ','_ ','··_ ', '···_ ','·__ ','_··_ ','_·__ ','__·· ','','','','','','·____· ','·_ ','_··· ', '_·_· ','_·· ','· ','··_· ','__· ','···· ','·· ','·___ ','_·_ ','·_·· ','__ ','_· ', '___ ','·__· ','__·_ ','·_· ','··· ','_ ','··_ ','···_ ','·__ ','_··_ ','_·__ ', '__·· ','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','', '','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','', '','','','·_ ','_··· ','·__ ','__· ','_·· ','· ','···_ ','__·· ','·· ','·___ ','_·_ ', '·_·· ','__ ','_· ','___ ','·__· ','·_· ','··· ','_ ','··_ ','··_· ','···· ','_·_· ', '___· ','____ ','__·_ ','__·__ ','_·__ ','_··_ ','··_·· ','··__ ','·_·_ ', '·_ ','_··· ','·__ ','__· ','_·· ','· ','···_ ','__·· ','·· ','·___ ','_·_ ','·_·· ', '__ ','_· ','___ ','·__· ','·_· ','··· ','_ ','··_ ','··_· ','···· ','_·_· ','___· ', '____ ','__·_ ','__·__ ','_·__ ','_··_ ','··_·· ','··__ ','·_·_ '); procedure TForm1.Button1Click(Sender: TObject); var i,n:integer; s,r:string; begin s:=edit1.Text; n:=length(s); r:=''; for i:=1 to n do r:=r+morzetabl[ord(s[i])]; label1.Caption:=r; end; И все. Помогаю платно. Помогаю иногда бесплатно. Последний раз редактировалось @Rafa3L, 03.08.2012 в 00:33. |
Этот пользователь сказал Спасибо @Rafa3L за это полезное сообщение: | ||
OTVET (18.01.2013)
|
#10
|
||||
|
||||
Вот только за первый код заказчик заплатит скажем 3000р, а за второй скажет "ты чё опупел?!!!! за три строчки платить?!!! Три строчки набирать 1 минуту и ты хочешь за это деньги???!!!!111111111 Иди проспись!!!!!!1111111"
Помогаю платно. Помогаю иногда бесплатно. |
#11
|
||||
|
||||
Код:
var special_words = new Array('sos'); Да это везде так, не только в ИТ, чем хуже - тем лучше. То же самое можно отнести к фильмам, музыке и т.д. Сколько фильмов за год не выпустил хуливуд, все наполнены эпосом, но смысла никакого нет, посмотрел и забыл. Кстати да, ща большинство цивилизованных приматов XXI века интернетом пользуются в основном ради "общения", так что "за соцЕальными сетями будуЮщее, это модно и перспективно". З.Ы. Сорри, если написал нелогичную фигню — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 03.08.2012 в 07:57. |
#12
|
|||
|
|||
на руби:
Код:
LETTER = Hash[*%w" A .- N -. B -... O --- C -.-. P .--. D -.. Q --.- E . R .-. F ..-. S ... G --. T - H .... U ..- I .. V ...- J .--- W .-- K -.- X -..- L .-.. Y -.-- M -- Z --.. "] MORSE = LETTER def morse text text.upcase.chars.map { |char| MORSE[char] or unknown(char) }.join end def unknown char "(#{ char })" end raise unless morse('Sofia') == '...---..-....-' raise unless morse('123') == '(1)(2)(3)' Hash[*%w"....."] - эта магия разбивает текст по пробелам и переносам строки(регулярным выражением) в одномерный массив, и создаёт отображение нечётных его элементов на чётные >woweook< |
#13
|
||||
|
||||
Это выглядит конечно хорошо и кратко.
Но, за любой программой, не важно на чем написанной, стоит алгоритм. В этом случае получаем на руби: 1. Скрытое "магические" преобразование A .- N -. в таблицу T1=('A','B', T2=('.-', 2. Поиск в Т1 А и замена на значение в Т2. Минусы: Слабые моменты "скрыты" за функциями. 1. Ненужное преобразование. И как оно там преобразовывает - тоже вопрос. Оно может быть реализовано "на все случаи жизни" и соответстенно быть ну ооочень не оптимальным. Делит по пробелам? - А вот мне нужен пробел. Как быть? Дописывать исключения? 2. Поиск А в таблице. Насколько он оптимально реализован неизвестно. И он похож на функцию сродни PHP код:
Я за то чтобы создавались новые библиотеки подпрограмм, для узких задач. Например, работаешь с графикой - выбрал соответствующую библиотеку. А вот когда заменяют: PHP код:
PHP код:
PHP код:
PHP код:
PHP код:
PHP код:
А дальше что? На каждое простое действие разрабатывать процедуры/функции? И что мы получим? Проггер будет знать PHP код:
PHP код:
PHP код:
PHP код:
PHP код:
Это оправдано если вы используете специфические функции библиотеки, но когда это нужно чтобы написать for to - это уже беда. Далее: визуальное восприятие затруднено Программа читается как и книга, по строчкам И желательно чтобы в строчке были быстро понятные действия Например, читаем PHP код:
PHP код:
Особенно в функциях вида PHP код:
П.с.: а потом окажеться что если на вход супер функции подать текстовую переменню с некими спецсимволами - получаем SQL-injection. И вот вместо выдачи кода морзе прога отправит пароли пользователя в сеть, а разрабочики будут чесать затылок " а как так могло получиться???" Помогаю платно. Помогаю иногда бесплатно. Последний раз редактировалось @Rafa3L, 03.08.2012 в 18:38. |
#14
|
|||
|
|||
всю магию можно переписать на дельфи, но придётся соблюсти много бюрократии
например такой же текст "A .-..." перевести в массив StringList умеет TPerlRegexp - метод scan('[^\s]') получится список со всеми строками ['A', '.-', 'B', '-...'] потом взять сформировать ассоциативный массив из Stringlist например: Values['A'] := '.-'; а поиск он сам поддерживает... Цитата:
но супер-функций точно нет, есть уйма разных методов объектов (даже массив - объект), 2/3 методов принимают или 0 или 1 аргументов, только один - 2 аргумента, оставшиеся - массив аргументов (могу привести код который это считает ) вобще можно писать даже for циклы, другое дело что их очень редко используют, просто потому что без них можно обойтись и код будет проще, вместо той магии ассоциативный массив с пробелом можно было записать так {'A' => '.-', ' ' => '...'}, но с магией читабельность лучше => используется магия, но можно и скомбинировать по поводу читаемости и синтаксиса к руби претензий быть не может, просто мыслишь не в переменных и циклах, например: text.upcase.chars.map { |char| MORSE[char] or unknown(char) }.join текст преобразовать к верхнему регистру, разбить на массив символов, каждый элемент массива заменить значением из ассоц.массива MORSE или если совпадения не найдено то вызвать функцию unknown, склеить полученный массив в строку { } в дельфи выглядело бы как callback функция, указатель на которую передаётся функции map Цитата:
но не агитирую, из минусов: постоянно приходится пользоваться поиском, сильно зависишь от интернета, нет ide, книжки устаревают быстрее >woweook< Последний раз редактировалось Pyro, 03.08.2012 в 21:05. |
#15
|
||||
|
||||
Возникла идея:
Сравнить время выполнения кода на делфи и на руби. Например, условно, выпонить код 1 000 000 раз, для текста PHP код:
Помогаю платно. Помогаю иногда бесплатно. |