![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Бывают дни, когда хочется поразмышлять о том о сем... 
		
	
		
		
		
		
		
		
			Вот и сегодня забрел я на хабр и увидел интересную статью http://habrahabr.ru/post/148425/ Порадовался что есть еще люди которые трезво смотрят на мир. действительно, новомодные веяния программирования в последние годы зашкаливают. Создается впечатление, что умышленно заводят ИТ-отрасль в тупик. Подрастает поколение, которое только и может программить: Код: 
	data.sort(superarray) Далее, переходя по ссылкам, нашел: PHP код: 
	
		
	Эта Владимирская директор НR агенства, вот она ищет кадры. А вам не страшно? Мне стало страшно, от мысли каких она безопасников найдет... Последний раз редактировалось Konrad, 25.07.2012 в 19:37.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Да уж, ужасно. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	![]()  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 PHP код: 
	
		
	http://www.confreaks.com/videos/550-...re-engineering  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Каждый язык хорош под свои задачи. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#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 века интернетом пользуются в основном ради "общения", так что "за соцЕальными сетями будуЮщее, это модно и перспективно". З.Ы. Сорри, если написал нелогичную фигню Последний раз редактировалось 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"....."] - эта магия разбивает текст по пробелам и переносам строки(регулярным выражением  ) в одномерный массив, и создаёт отображение нечётных его элементов на чётные | 
| 
		 
			 
			#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, книжки устаревают быстрее Последний раз редактировалось Pyro, 03.08.2012 в 21:05.  | 
| 
		 
			 
			#15  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Возникла идея: 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Сравнить время выполнения кода на делфи и на руби. Например, условно, выпонить код 1 000 000 раз, для текста PHP код: 
	
		
	 |