Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Флейм
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.07.2012, 19:04
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию Бывают дни, когда хочется поразмышлять

Бывают дни, когда хочется поразмышлять о том о сем...
Вот и сегодня забрел я на хабр и увидел интересную статью
http://habrahabr.ru/post/148425/

Порадовался что есть еще люди которые трезво смотрят на мир.
действительно, новомодные веяния программирования в последние годы зашкаливают. Создается впечатление, что умышленно заводят ИТ-отрасль в тупик.

Подрастает поколение, которое только и может программить:
Код:
data.sort(superarray)
не понимая даже основ сортировки.


Далее, переходя по ссылкам, нашел:
PHP код:
Нуа у нас после 21 часа в программе «Точка» сегодня руководитель агентства PRUFFI Алена Владимирская.

http://www.echo.msk.ru/programs/tochka/855657-echo/ [22:40]

АВЛАДИМИРСКАЯДаАннаизвините пожалуйста
На что учитьсячтобысоответственнотампотомчерез годчерез два,
 
через три – мы не знаемна каком она курседа– быть абсолютно 
востребованной
нуи претендовать на лучшую зарплату.
 
Соответственновот поэтому запросы текоторые идут сейчас
они к вопросу этому немножко не релевантны
Учиться надо сейчас следующему
Обязательно учитесь HTML5 – это прямвот-вот прям учитесь
это будущеебудущеебудущееИ второе – учитесь Ruby
Соответственнопотому что весь веб перейдет на Ruby
Забудьте PHPНуJava и С++ - ладно ужебог с нимучите тоже

Эта Владимирская директор НR агенства, вот она ищет кадры. А вам не страшно?
Мне стало страшно, от мысли каких она безопасников найдет...

Последний раз редактировалось Konrad, 25.07.2012 в 19:37.
Ответить с цитированием
  #2  
Старый 25.07.2012, 19:43
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Да уж, ужасно.


__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 25.07.2012, 21:05
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Цитата:
1V xxxxxxxx
2V xxxxxxxx
3V xxxxxxxx
4V xxxxxxxx
5V xxxxxxxx
6D xxxxxxxx
7D xxxxxxxx
8D xxxxxxxx
9M xxxxxxxx
10M xxxxxxxx
11M xxxxxxxx
12S1 xxxxxxxx
12S2 xxxxxxxx
вот такие строки перемешанные я бы на дельфи не рискнул сортировать, а на ruby:
PHP код:
array.sort_by { |lineline.scan(/\d+/).map(&:to_i) } 
а если там начать писать процедурным стилем и без тестирования, то программу скоро придётся переписывать заново или выбросить, поэтому agile

http://www.confreaks.com/videos/550-...re-engineering
Ответить с цитированием
  #4  
Старый 25.07.2012, 21:29
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Каждый язык хорош под свои задачи.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 26.07.2012, 00:09
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Pyro
вот такие строки перемешанные я бы на дельфи не рискнул сортировать, а на ruby:
PHP код:
array.sort_by { |lineline.scan(/\d+/).map(&:to_i) } 
а если там начать писать процедурным стилем и без тестирования, то программу скоро придётся переписывать заново или выбросить, поэтому agile

http://www.confreaks.com/videos/550-...re-engineering

Не будем сейчас обсуждать классы для которых можно задать функцию сортировки, нет смысла.
Руби я конечно не знаю. Если я правильно понял код, то из строки выбираются числа, из них формируется целое, которое затем сравнивается.

Если все так, то добавим в список вот такую строку:
Цитата:
8D1 xxxxxxxx
и сортировкой уже можно подтереться
Так что Pyro, могу вам сказать следующее
ЗЫЖ Ничего личного.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #6  
Старый 26.07.2012, 01:51
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

К сожалению чем больше компания, тем больше тратится денег непонятно на что.
Проекты раздуваются до неимоверных размеров.
Берутся новомодные решения, оплачивается работа консультантов.
А в итого получают проект, в котором ошибки как "деление на 0".(видел реальный пример, исправили конечно, но сам факт говорит о качестве проделанной работы).

И эти новомодные тренды превращаются в выкачивание денег заказчика, который зачастую не сильно отриентируется в вопросе.


П.с.:Я не против всяких там новомодных рельс и т.д.
Но вырастает поколение прогероов которые простые задачи, которые раньше на коленке в два счета решались, раздувают до неимоверных величин.

Беда еще в том, что эти все новомоджные веяния с точки зрения ИБ - непаханное поле для злоумышленника. Все это нужно проверить, перепроверить, пока пройдет время, пока найдут все дыры, появиться суперруби, и опять все по новой...
Ответить с цитированием
  #7  
Старый 26.07.2012, 07:20
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Цитата:
выбираются числа, из них формируется целое
(scan выберает массив по регулярному выражению, map превращает все элементы массива в integer)
тоесть, из каждой строки выбираются все числа в массив, и на основе таких массивов сортируются строки, и 8D1 встал между 8D и 9M
, а вобще если вынести оттуда функцию, то сам вызов выглядел бы так:
Цитата:
array.sort_by { |line| all_numbers_in line }

Последний раз редактировалось Pyro, 26.07.2012 в 08:04.
Ответить с цитированием
  #8  
Старый 02.08.2012, 21:07
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Знаете, мне как-то всегда было глубоко паралельно на хабр.

Читаю там заголовки восновном в теме ИБ.
Но уровень таких статей ниже плинтуса...

PHP код:
DropboxБаза с адресами электронной почты была украдена из аккаунта сотрудника

У биржевых хакеров снова наступила «ломка»…

Firefox заблокировал расширение Ubisoft Uplay

SAPокалипсис
BlackHatВзлом J2EEКошмаркошмар

DPAPI на пальцах 



посты
Лучшие
За всё время

PHP код:
и вот на первой странице саамые порпулярные темы:

Стив Джобс умер

История интернет
-магазинаставшего мировым монополистом за $5 000 

Отказ от устаревших браузеров 
Блог компании ВКонтакте

Спать мало
но правильно



Это их дело что они пишут, другое дело что мнят о себе админы.

решил присмотреться, и вот почитал у них о карме, условиях публикации статей и т.д.

http://lurkmore.to/Хабр :
Цитата:
Но на этом эпопея не закончилась, во вторник 18 августа 2009 было запосщено сообщение такого содержания:
Я понимаю что это полный идиотизм писать на Хабре это, но похоже разработчики этого полезного ресурса совсем уже от реальности оторвались. Хорошо, вам не понравилась статья по поводу взлома хабра-каптчи (хотя, как верно заметили в коментах, у вас не было вопросов когда подобные статьи касались взлома других каптч). х Но удалить весь топик с Хабра, со всеми комментариями, потому что одному из разработчиков не понравилось что его не поддержали в его праведном гневе??? Вы там вообще офигели? Я лично писал комментарии в эту тему, и я лично крайне оскорблен таким отношением ко мне со стороны администрации. Ребята, у вас аудитория не девочки-подростки, которых можно безболезненно банить. Научитесь жить в ладах со своей аудиторией, и не опускайтесь до быдлячества.


И вот тут задумался...

И вот что хочеться написать тут всем, кто считает себя специалистом хотя бы в маааленькой отрасли:


Имейте гордость в интернете.
Никакая карма и никакая популярность ни на каком сайте интернета не даст вам знаний. Будь вы в топе хабра не хабра, это ничего не значит. Значат только ваши знания и умения делать что-то стоящее, и только они что-то значат.
__________________
Помогаю платно.
Помогаю иногда бесплатно.
Ответить с цитированием
Этот пользователь сказал Спасибо @Rafa3L за это полезное сообщение:
OTVET (18.01.2013)
  #9  
Старый 02.08.2012, 21:51
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Сoвременные веяния программирования это конечно круто, но они сопутсвовали появлению целого поколения говнокодеров...

Как-то на днях нужно было мне написать на морзянке пару слов...
Чтобы не писать самому программу зашел в гугл и набрал "морзе онлайн".
На первом сверху сайте перевел что нужно.
На этом бы все и закончилось.

Но мне стало интересно, а как они реализовали решение задачи.

http://live.mephist.ru/show/morze/
Летопись МИФИ - Московский инженерно-физический институт

И вот вытащил саму функцию:

PHP код:
var symbols = new Array('а','б','в','г','д','е','ё''ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ъ','ы','э','ю','я','1','2','3','4','5','6','7','8','9','0','.',',','/','?','!',';','-',':','\'','"','_',  ' ','@','a','b','w','g','d','e','v','z','i','j','k','l','m','n','o','p','r','s','t','u','f','h','c','q','x','y');
var 
codes = new Array('12','2111','122','221','211','1','1','1112','2211','11','1222','212','1211','22','21','222','1221','121','111','2','112','1121','1111','2121','2221','2222','2212','2112','2112','2122','11211','1122','1212','12222','11222','11122','11112','11111','21111','22111','22211','22221','22222','111111','121212','21121','112211','221122','21212','211112','222111','122221','121121','112212',  '21112','122121','12','2111','122','221','211','1','1112','2211','11','1222','212','1211','22','21','222','1221','121','111','2','112','1121','1111','2121','2212','2112','2122');

var 
special_words = new Array('sos');
var 
special_codes_normal = new Array('11102220111');
var 
special_codes_correct = new Array('111222111');

var 
lang_symbols;
var 
lang_codes;

var 
lang_set = new Array('ru','en');

var 
symbols_str symbols.join('');

function 
CodeArray2String(arr) {
    var 
output '';
    for (var 
i=0i<arr.lengthi++)
        
output += String.fromCharCode(arr[i]);
    return 
output;
}

var 
morze_display = new Array(32,183,8211);
var 
morze_str CodeArray2String(morze_display);

var 
dash_symbols = new Array(95,45,8211,8212);
var 
dash_str CodeArray2String(dash_symbols);

var 
dot_symbols = new Array(46,183,42,8226);
var 
dot_str CodeArray2String(dot_symbols);
    
var 
current_text '';
var 
current_mdisplay '';
var 
current_morze '';



function 
ConvertN2M(txt) {
  if (
txt.length>0) {
    
CheckNormal(document.getElementById('NormalText'));
    
    var 
MText '';
    var 
MDisplay '';
    
    if (
txt.lastIndexOf(' ') == txt.length-1)
        
txt txt.substr(0,txt.length-1);
    for (var 
i=0i<txt.lengthi++) {
        
MText += codes[symbols_str.indexOf(txt.charAt(i))]+'0';
    }
    
//Обрабатываем злосчастный SOS
    
MText '211120'+MText+'21112';
    for (var 
i=0i<special_codes_normal.lengthi++) {
        var 
sReg = new RegExp('211120'+special_codes_normal[i]+'021112','g');
        
MText MText.replace(sReg,'211120'+special_codes_correct[i]+'021112');
    }
    
MText MText.substr(6,MText.length-11);
    
    
current_morze MText;
    for (var 
i=0i<MText.lengthi++) {
        
MDisplay += String.fromCharCode(morze_display[parseInt(MText.charAt(i),10)]);
    }
    
document.getElementById('MorzeText').value MDisplay;
    
current_mdisplay MDisplay;
    
    
SoundShow();
  }


Разбирать код не советую, ибо чревато раком мозга.

Краткая суть реализации.

Есть 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 код:
for (var i=0i<txt.lengthi++) {MText += codes[symbols_str.indexOf(txt.charAt(i))]+'0';} 
Вызывая кучу подпрограмм, преобразовывая стринг в инт и обратно.
А что? Чтобы быстрее работало.

А дальше последовательность вида 2211211221212112
преобразовываем в точки и тире
PHP код:
for (var i=0i<MText.lengthi++) {MDisplay += String.fromCharCode(morze_display[parseInt(MText.charAt(i),10)]);} 
Ага, парсер. Мало, нужно было еще регулярные выражения прикрутить.

В чем же ошибка автора:
Он не полностью следует современным веяниям.

Нужно:
- Кнопки лайк фесбука.
- Возможность оправлять вконтакт.
- Обязательно заходить через АйХрень.
- Обязательная кнопка - поделится с друзьями.
- Обязательное отображение координат, чтобы сидя в туалете поезда Пенза-Копейск среди ночи постить код морзе в Твиттер.

Пример того как из простого сделать сложное.


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  
Старый 02.08.2012, 22:27
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Вот только за первый код заказчик заплатит скажем 3000р, а за второй скажет "ты чё опупел?!!!! за три строчки платить?!!! Три строчки набирать 1 минуту и ты хочешь за это деньги???!!!!111111111 Иди проспись!!!!!!1111111"
__________________
Помогаю платно.
Помогаю иногда бесплатно.
Ответить с цитированием
  #11  
Старый 03.08.2012, 07:45
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
var special_words = new Array('sos');
убило....

Да это везде так, не только в ИТ, чем хуже - тем лучше. То же самое можно отнести к фильмам, музыке и т.д. Сколько фильмов за год не выпустил хуливуд, все наполнены эпосом, но смысла никакого нет, посмотрел и забыл.

Кстати да, ща большинство цивилизованных приматов XXI века интернетом пользуются в основном ради "общения", так что "за соцЕальными сетями будуЮщее, это модно и перспективно".

З.Ы. Сорри, если написал нелогичную фигню
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 03.08.2012 в 07:57.
Ответить с цитированием
  #12  
Старый 03.08.2012, 08:50
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

на руби:
Код:
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  
Старый 03.08.2012, 18:16
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Это выглядит конечно хорошо и кратко.

Но, за любой программой, не важно на чем написанной, стоит алгоритм.

В этом случае получаем на руби:

1. Скрытое "магические" преобразование

A .- N -.

в

таблицу

T1=('A','B',
T2=('.-',

2. Поиск в Т1 А и замена на значение в Т2.


Минусы:

Слабые моменты "скрыты" за функциями.

1. Ненужное преобразование. И как оно там преобразовывает - тоже вопрос. Оно может быть реализовано "на все случаи жизни" и соответстенно быть ну ооочень не оптимальным.
Делит по пробелам? - А вот мне нужен пробел. Как быть? Дописывать исключения?

2. Поиск А в таблице. Насколько он оптимально реализован неизвестно.
И он похож на функцию сродни
PHP код:
sort(); 
Что в неё "впихнули" - вопрос.

Я за то чтобы создавались новые библиотеки подпрограмм, для узких задач.
Например, работаешь с графикой - выбрал соответствующую библиотеку.

А вот когда заменяют:

PHP код:
for i:=1 to n do 
PHP код:
for i:=1 to n do
if 
j>1 then .... 
PHP код:
for i:=1 to n do
if 
j>1 then 
if g=k then 
на
PHP код:
Перебор1(k,n,x
PHP код:
ПереборСУсловием(k,n,j,x
PHP код:
ПереборСДвумяУсловиями(k,n,j,g,x

А дальше что?
На каждое простое действие разрабатывать процедуры/функции?

И что мы получим?

Проггер будет знать
PHP код:
ПереборСУсловием() 
Но когда ему нужно будет написать:
PHP код:
for k:=1 to n do
for 
i:=1 to n do
if 
j>1 then 
if g=k then
for l:=1 to n do
if 
g=k then 
Он вынужден нагородить:
PHP код:
Перебор1(k,n,ПереборСДвумяУсловиями(k,n,j,g,ПереборСУсловием(k,n,j,x))) 
и вместо знания
PHP код:
for to
if then 
нужно будет знать все тонкости
PHP код:
Перебор1(
ПереборСУсловием(
ПереборСДвумяУсловиями(
ПереборСТремяУсловиями
и т.д.

Это оправдано если вы используете специфические функции библиотеки,
но когда это нужно чтобы написать for to - это уже беда.


Далее:
визуальное восприятие затруднено

Программа читается как и книга, по строчкам
И желательно чтобы в строчке были быстро понятные действия
Например, читаем
PHP код:
for k:=1 to n do ' для к=1 до н '
for i:=1 to n do  ' тоже самое для и '
if j>1 then  ' если джи больше 1  ' 
А теперь читаем:
PHP код:
Перебор1(k,n,k,n,j,g,ПереборСУсловием(k,n,j,x))) 
' Перебор для к=1 до н для .... и тут целый том "Войны и мира"' 
При этом не забыть на каком месте в скобках что находится....
Особенно в функциях вида
PHP код:
суперфункция(a,b,e,r,t,i,j,d


П.с.:
а потом окажеться что если на вход супер функции подать текстовую переменню с некими спецсимволами - получаем SQL-injection.
И вот вместо выдачи кода морзе прога отправит пароли пользователя в сеть, а разрабочики будут чесать затылок " а как так могло получиться???"
__________________
Помогаю платно.
Помогаю иногда бесплатно.

Последний раз редактировалось @Rafa3L, 03.08.2012 в 18:38.
Ответить с цитированием
  #14  
Старый 03.08.2012, 20:21
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

всю магию можно переписать на дельфи, но придётся соблюсти много бюрократии

например такой же текст "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

Цитата:
получаем SQL-injection.
а чистый sql можно забыть если не надо использовать специфичных для отдельной БД функций

но не агитирую, из минусов: постоянно приходится пользоваться поиском, сильно зависишь от интернета, нет ide, книжки устаревают быстрее
__________________
>woweook<

Последний раз редактировалось Pyro, 03.08.2012 в 21:05.
Ответить с цитированием
  #15  
Старый 05.08.2012, 18:57
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Возникла идея:

Сравнить время выполнения кода на делфи и на руби.

Например, условно, выпонить код 1 000 000 раз, для текста
PHP код:
official weblogwith news of new productsevents and glimpses of life inside google
__________________
Помогаю платно.
Помогаю иногда бесплатно.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:59.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter