All streams
Search
Write a publication
Pull to refresh
13
0
Дмитрий Павличенко @godlin

User

Send message
Все таки XML — это данные. Данные и программа — это разное.

Скажи это Лиспу ;)
Мне кажется, тут ответ очень простой: люди хотят денег.

Не понятно? Очевидно, что каждая такая система предъявляет свои особые требования, и если эти требования не реализованы в стандартном ПО, значит их надо реализовать. Чтобы их реализовать, надо вложить деньги. Если ты вложил деньги в разработку этого самого стандартного ПО, считай, что ты подарил их конкурентам (раз уж оно стандартное, значит все им будут пользоваться). Таким образом, каждый разработчик, который ориентирован в первую очередь на прибыль, предпочитает ковыряться в своей песочнице, а не щедро делиться с окружающими. Отсюда, кстати, и патентные войны — не дай бог кто из конкурентов научится делать так же как мы — они ж у нас деньги отнимут — давить гадов!
Мне кажется, у вас слишком стереотипные представления о понятиях «праздник» и «заслужил» :)
Заранее прошу прощения на случай, если мой ответ вам покажется через чур… холиварным что ли…

1. Лицемерие в том, что
1.1. каждый из возмущающихся, в общем-то, не откажется от халявы, если процесс её получения не будет связан с личными моральными предубеждениями.
1.2. почти любой из них же, будучи поставлен в соответствующую ситуацию, не долго будет сомневаться, можно ли просить денежной помощи у прохожих.

2. Я Вам очень не сочувствую, что Вы сидите в офисе с 6 до 9. Я Вам со всей ответственностью заявляю: всегда можно найти точно такую же работу (какой вы занимаетесь), но работать её дома и в своё удовольствие. Офис — это Ваш выбор, сами виноваты ;)

3. Мне кажется вопрос «пользы» — очень тонкий и во многом философский вопрос. Вы абсолютно уверены, что Ваша работа реально приносит пользу кому-то, кроме хозяев вашей конторы?) Я тоже занимаюсь «офисной» работой, но отдаю себе отчет в том, что польза от результатов моей работы для общества под большим вопросом. А уж сравнивать пользу от деятельности Ромы с пользой от своей деятельности я бы не рискнул вообще. И, кстати, помните высказывание «что нас не убивает — делает нас сильнее»? Это значит, что иногда получить разряд электричества из розетки полезнее, чем прочитать учебник по физике.

4. Вы абсолютно уверены, что не занимаетесь решением своих финансовых проблем за счет общества? Если абсолютно уверены, то я завидую Вашей самозабвенности и самовлюбленности. :) Ну, и глупости заодно. Потому что только дурак может быть абсолютно уверен в чем-то :)

5. Айпад и айфон — это не мерило достижений, это просто гаджеты, железяки. У меня их тоже нет — они для меня бесполезны.

6. Если Вас не устраивает Ваша зарплата — это повод искать другое место работы, а не повод гордиться тем, что Вы можете вкалывать за гроши.

Простите, если кого-то чем-то задел — я не хотел.

Я пытаюсь выразить две простые мысли:
1. Узость взглядов — это узость мышления и признак отупения)
2. Ваше личное мировозрение не является непогрешимым — глубоко продумывайте свое мнения, прежде чем осуждать кого-то, кто Вашим взглядам не соответствует. Зри в корень, как говорил Козьма Прутков.
Злые вы, вот он и уехал от вас автостопом в НуЁрк)))
Знаете, как говорят? От сумы и от тюрьмы не зарекайся!
Я в молодости тоже успел попрошайничать немного — интересный опыт.
Вообще, что за манера — осуждать человека, не зная про него практически ничего? Что вы знаете о том, что он сделал в своей жизни помимо того, что описано в посте? Морализаторы…
Нет, я не поддерживаю попрошайничество как образ жизни, я просто не люблю лицемерие.
Вот такая вот штука у меня вышла.
Только в 30 строк не уложились повороты фигур :(

<canvas id="canvas" style="background:#eeeeee" width = "200px" height="400px" ></canvas>

var map=[], pos=5, move=0, score=0, bit=0, fig=0;
var canvas = document.querySelector('#canvas'),  ctx = canvas.getContext("2d");
function _$ (body, ret){ return eval("(function(a,b,c){"+(ret ? 'return ':'')+body+";})");}
_i = _$("parseInt(a)", 1);
range = _$("_$('for(var i='+a+'; i<='+b+'; ++i ) a(i); return 1')", 1);
set_color = _$("ctx.fillStyle = (['none', 'white', 'black', 'red'])[a]", 1);
draw_cell = _$("set_color(map[a]) && ctx.fillRect(a%10*20, _i(a/10)*20-20*3, 19, 19);");
can_move = _$("(b>1 || _i(a/10)==_i((a+b)/10)) && (a+b>=0) && ((a+b)<map.length) && (map[a+b]!=2)", 1);
bounced = _$('map.reduce(_$("a + ((b==3) && !can_move(c, "+a+")) ? 1 : 0", 1), 0)', 1);
cell_move = _$("can_move(a, b) && (map[a+b]=map[a]) && (map[a]=1)");
cell = _$("map[pos + a%4 + parseInt(a/4)*10] = (([1,15,46,78,142,204,198])[b] & (1<<(7-a))) ? 3 : 1");        
new_fig = _$("range(0, 7)(_$('cell(a,'+(Math.floor(Math.random()*6)+1)+')'))", 1);
(rng0_229 = range(0, 229))(_$("map[a] = 1"));
new_fig();
document.body.onkeydown = function(e) { 
    (move = ([-1, 0, 1, 10])[e.keyCode-37]) && !bounced(move)
       && rng0_229 (_$("b = move<0 ? a : 229-a; map[b]==3 && cell_move(b, move)"));
}; 
var interval = setInterval (function () {
    bounced(10) >0  && rng0_229 (_$("map[a]==3 && (map[a]=2)"))
         && range(3, 22) (_$('map.slice(a*10, a*10+10).reduce(_$("a+b", 1),0)==20 && ++score\
                             && range(a*10, a*10+9)(_$("map[a]=1"))\
                             && rng0_229 (_$("cell_move(229-a, 10)"))'))
         && range(20, 29) (_$("(map[a]==2) && interval && !clearInterval(interval) \
                          && !alert ('Game over! Score: '+score) && (interval=0) "))
       && new_fig();
    rng0_229 (_$("map[229-a]==3 && a>=10 && cell_move(229-a, 10)"))
    rng0_229 (_$("draw_cell(a)"))
}, 200);
Кстати, я в своем варианте отказался от двумерного позиционирования (x:y) — и получилось заметно короче, потому что работаю только с одной координатой практически.
Зато у меня честные 30 ^_^
Даже в 80 символов по ширине умещаются))
Самая засада, когда надо, чтобы это были честные 30 строк, а не
a(); b(); c(); d(); if(){}; for(); function() {};

;)
Что-то не сохранился нормально предыдущий вариант :(
Теперь, вроде, все ок и работает.
Мой вариант с автоматической генерацией поля:

var h_pos=f_pos=score=0, len=5, move=1, snake=[0], dx=15, dy=10, dxy=150;

function _$ (body) { return eval("(function (a, b) { return "+body+"; })"); }
elem = _$("document.getElementById (a)");
set_class = _$("elem('cell_'+a).className = 'cell'+ (b ? ' '+b : '')");
is_snake = _$("elem('cell_'+a).className.indexOf(' s') >= 0");
new_food = _$("is_snake (f_pos = Math.floor(Math.random() * a) + b) \
                        ? new_food(a,b) : f_pos");
new_cell = _$("'<div id=cell_'+a+' class=\"cell'+(a ? '': ' s')+'\"></div>'");
new_line = _$("a ? '<div class=line></div>' : ''");
line_change = _$("dx * (parseInt ((a + b%dx)/dx) - parseInt (a/dx))");

for (var i=0; i<dxy; ++i) 
    elem ("main").innerHTML += new_cell (i) +new_line(i%dx == dx-1);

document.body.onkeydown = function(e) { 
    move = ([-1, -dx, 1, dx])[e.keyCode-37]; 
};

set_class (new_food(dxy-2, 1), 'f');
var interval = setInterval (function () {
    h_pos = (h_pos +dxy + move - line_change (h_pos, move)) %dxy;
    if ( is_snake(h_pos) && !clearInterval(interval) )  
        alert('Game Over! Your score: ' + score);
    set_class (h_pos, 's');
    f_pos == h_pos && new_food(dxy-1, 0)>=0 
                   && ++len && ++score && set_class (f_pos, 'f');
    snake.push (h_pos);
    snake.length>=len && set_class (snake.shift());
}, 300);
Попробовал на XP. wmic выдаёт ошибку:

ОШИБКА:
Код = 0x80041001
Описание = Общая ошибка
Услуга = WMI
Очень интересный проект!
Когда недавно пытался представить себе программирование на тачскрине, представил что-то ОЧЕНЬ похожее!
Не, ну, они за меня тогда еще и работать будут :)
Самый универсальный IDE — это другой программист.
Я давно мечтаю об инструменте, который позволил бы мне программировать с минимальным взаимодействием с клавиатурой. И даже не мышкой тыркать, а прямо пальцем по экрану водить и собирать программу как конструктор, время от времени вбивая названия переменных и всякие константы…

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

Интересно, что этот нодовый интерфейс — это, фактически, отдельный язык программирования, который автоматически транслируется в несколько других. И, в общем-то, трансляция именно в PHP и MySQL вовсе не принципиальна — вполне можно и в другие языки. Полагаю, что больше всего для нодов подходят функциональные языки, потому что функциии самодостаточны, а значит перекрестных связей будет гораздо меньше, чем в императивных языках.

Основная проблема мне видится в том, что у подобного редактора будут те же болезни, что у любого ВИЗИВИГа, т.е. много мусора, неоптимальный код, трудность с наведением порядка при изменении структуры кода (например, надо закомментить часть функционала — как это будет отоборажаться).

И еще, от этого проекта было бы на порядок больше пользы, если бы он умел генерировать свою (адекватную!) карту на основе уже существующего кода, но это, конечно, намного больше работы требует для реализации.
А все потому, что они должны максимально избегать разночтений.

Тут, мне кажется, дело какое… Разночтений требуется избегать, потому что логика современного компьютера однозначна.
Представьте, что Вы рассказываете школьнику, как искать корни квадратного уравнения: Вы же словами ему рассказываете, фактически вы задаёте программу. А человеческий мозг устроен так, что, с одной стороны, он часто совершает ошибочные выводы/действия, а с другой — высокоадаптивен. Компьютер — наоборот — практически не адаптивен, но зато сбои и ошибки для него — это не норма, а дикое исключение.
Именно поэтому компьютер очень эффективен на узких задачах и неэффективен на больших, сложных, контекстных. А человек — наоборот.

Полагаю, основная задача ИИ сейчас — это понять, что такое абстракция и образы с размытыми границами. Как мне кажется, фишка в том, что образы в мозгу хранятся не в отдельных коробочках, а плавно перетекают друг в друга.
Каждый раз, когда выбираю технологии для реализации нового проекта, возникает вопрос: а не попробовать ли какой-то новый язык/технологию? Начинаю анализировать (скажем, для веб): node.js еще сыроват, руби/питон еще в среднем отстают по производительности даже от PHP, писать на c/c++ вижу смысл только для отдельных высоконагруженных модулей, но никак не весь проект.

Cобственно, к чему я веду…
Вот есть язык J, не самый простой для чтения/понимания, с не самым лучшим инструментарием (например, для построения интерфейсов и т.п.), вряд ли очень производительный… Тем не менее, он востребован.
Может мне кто-нибудь описать нишу этого языка? Т.е. в каких случаях J окажется для меня лучшим выбором, а не, скажем, какой-нибудь Lisp/Haskell/Ruby?
С этого места перестал понимать, что происходит:
u&.v y NB. эквивалентно v_инверсия u v y

:(
Что это все значит???
На самом деле, практика оптимизации производительности/использования памяти кода показывает, что иногда лучше сделать 5 одинаковых по структуре куска кода, но сэкономить на времени создания класса и передаче туда-сюда параметров. :(

Красивый код очень часто вступает в противоречие с оптимальным кодом :'(

Information

Rating
Does not participate
Location
Ярославская обл., Россия
Registered
Activity