LINUX.ORG.RU

[Тред-совет] ЯП с динамической типизацией


0

6

Присматриваю для себя - чего бы нового изучить. Железная, непоколебимая статика - хорошо конечно, но начинает надоедать. Аккуратности кода уже вроде набрался, можно попробовать динамику. Вот и стою перед выбором - куда податься - Python, Ruby, JS или что там еще?

Итак, императивный, лаконичный, кроссплатформенный ЯП, с динамической типизацией, с развитой инфраструктурой, продукты которого жрут минимум памяти, адекватные по скорости, можно с вкраплениями функционального программирования, и совсем хорошо, если компилируемый - что посоветует многоуважаемый All?? (желательно с обоснованием)

Цель - создание серверных, десктопных и веб-приложений. Будет Ъ, если можно использовать один код для веб и десктопа (по типу Eclipse RAP/RCP)

Спасибо

★★★★★
Ответ на: комментарий от shty

> твой беспилотник - лох, «наипать» такую машину проще пареной репы,

«Вы наверное думаете что в правительстве дураки сидят. Полетите ночью»(С)

поставить чуть поодаль чучелко соломенное трепыхающееся и террористы

смогут ходить по улицам не боясь, ибо он на трепыхающееся


среагировал и все свои камеры туда понаводил



«Естественно сейчас идентификацию целей выполняет оператор» (C)

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

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


Расход боеприпаса будет лишний.

kernel ★★☆
()
Ответ на: комментарий от shty

>> «чтобы лишний видеопоток через спутник не гонять. Сейчас это одно из самых серьезных ограничений применимости бпла». Насчет этого нет возражений?

есть, суть ограничения не пояснишь?

Правильнее было бы спросить об этом kernel, но, по-моему, дело в деньгах (внезапно).

http://www.nsr.com/index.php?option=com_content&view=article&id=337:u...

«What this means for satellite operators is simply a 75% increase in potential clients to serve»

http://www.fas.org/irp/crs/RL31872.pdf

«Some sources say that the military does not have enough bandwidth to download video and radar images via satellite communications from more than one UAV at a time».

http://www.airforcetimes.com/news/2010/07/airforce_UAVs_073010/

«Another major vulnerability of UAS is their heavy reliance on a data link — much of it carried by commercial means and lacking a central oversight.»

То, что ты говоришь «ааа они примут чучелко за Бен Ладена!!11», конечно, мощное возражение, но не отменяет необходимости решения задачи.

ну так реши (это не персонально Вам) задачу

Думаю, ее решают уже. Но речь шла как раз о том, что ее необходимо решить, и для этого в БПЛА нужно больше мощной аппаратуры обработки данных.

tailgunner ★★★★★
()
Ответ на: комментарий от Xenesz

Юнит же может ещё на борту хотя бы минимально обработать кадр, выделяя объекты. Или сразу в виде точек с параметрами высота-курс-скорость.

а если это танк стоит, какая у него скорость? :) и что такое для него высота и курс?

Или таки гонит картинку как есть?

«Естественно сейчас идентификацию целей выполняет оператор...» (c)

shty ★★★★★
()
Ответ на: комментарий от kernel

Пока беспилотник ищет потенциальные цели и шарит *несколькими камерами* уже могу сэкономить несколько видеопотоков. Опять же пока оператор смотрит на одну камеру - другие продолжают искать - экономия.

Вы когда-нибудь занимались распознаванием объектов на земле (бронетехники, людей, укреплений, домов)? когда-нибудь пробовали заниматься разделением гражданских и военных объектов? как Вы оцениваете реализуемость такой задачи?

> а вот ты совсем не представляешь

Понтов только вот не надо.

никаких понтов, ты и правда этого не представляешь, это я тебе серьёзно говорю, прошу только простить меня - пояснять не стану, надеюсь понятно почему

shty ★★★★★
()
Ответ на: комментарий от shty

что такое для него высота и курс?

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

Xenesz ★★★★
()
Ответ на: комментарий от tailgunner

Но речь шла как раз о том, что ее необходимо решить, и для этого в БПЛА нужно больше мощной аппаратуры обработки данных.

вот тут как раз и корень проблемы - бпла должен обладать определённой мобильностью и временем работы, чем мощнее аппаратура - тем больше потребление энергии, а результата особого нет

будут созданы системы, которые позволят решать такие задачи - круто, будут думать над применением, нет - и разговаривать не о чём

shty ★★★★★
()
Ответ на: комментарий от Xenesz

С наземными посложнее, ага. Ну хотя бы контуры выделить, можно объект в разных диапазонах просканировать, а оператору дать комбинацию типа «железный, тёплый, вот с таким профилем».

такая обработка - это да, но она не по картинке же делается, это данные тепловизора, радара и пр.

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

shty ★★★★★
()
Ответ на: комментарий от shty

много левака будет

Сложить картинки разных диапазонов — левак будет или холодный, или не отразит радар, или ещё что.

Xenesz ★★★★
()
Ответ на: комментарий от Xenesz

хотя их можно использовать в совокупности с другими данным

shty ★★★★★
()
Ответ на: комментарий от shty

> Вы когда-нибудь занимались распознаванием объектов на земле

(бронетехники, людей, укреплений, домов)?


Я тебе тоже отвечать на это вопрос не буду.

когда-нибудь пробовали заниматься разделением гражданских и

военных объектов? как Вы оцениваете реализуемость такой задачи?



Еще раз, медленно и печально.

Речь не идет о разделении гражданских и военных объектов, в том числе архитектуры. Речь даже не идет о достаточно точном распознавании бронетехники и людей. Речь идет о *предварительном* распознавании *потенциальных* целей, при чем, фактически, в условиях приближенных к бою. А не в режиме аэрофотосъемки. Это раз.

Два. Человека лежащего и замаскированого в видимом диапазоне конечно хрен распознаешь. А вот человека бегущего/идущего - очень даже. То же самое с бронетехникой. В движении распознать вполне реально автоматически.

Опять же. Нам не нужен уровень распознавания «это танк, надо стрелять». Нам достаточно уровня распознавания «движущаяся хреновина размером с танк», "... хреновина размером с автомобиль", "... хреновина размером с человека". Потом можно сделать серию увеличенных кадров этой обнаруженой хреновины, которые и послать оператору.

пояснять не стану, надеюсь понятно почему


Вот за что люблю наших работников ВПК это вот за такой подход к дискуссии. Нет, к твоему сожалению, я как раз представляю.

kernel ★★☆
()
Ответ на: комментарий от shty

> а если это танк стоит, какая у него скорость? :) и что такое для

него высота и курс?


А если танк, внезапно, едет?

Или таки гонит картинку как есть?

«Естественно сейчас идентификацию целей выполняет оператор...» (c)


xxxxx. Выполнение оператором задачи идентификации цели это не «гонит картинку как есть». «Гнать картинку как есть» это когда камеру вертит оператор и в ее видеопоток смотрит.

Идентификацию целей можно без видеопотока выполнять. По нескольким снимкам объекта - при совершенно другой нагрузке на канал.

kernel ★★☆
()
Ответ на: комментарий от shty

> вот тут как раз и корень проблемы - бпла должен обладать

определённой мобильностью и временем работы, чем мощнее аппаратура -

тем больше потребление энергии, а результата особого нет



Полная мощность двигла предатора-Б - 920киловатт. На борту полно электронного оборудования, аппарат проектировался с запасом по электрической мощности. Разместить там «современный» среднепотолочный «мощный» компьютер не должно представлять проблемы.

будут созданы системы, которые позволят решать такие

задачи - круто, будут думать над применением, нет -


и разговаривать не о чём



Какие системы? Системы о которым мы говорим уже разработаны - о чем тут уже сообщали агенты ЛОР зарубежом :D

kernel ★★☆
()
Ответ на: комментарий от dib2

Я удивлен что никто до меня этого не написал :)

drull ★☆☆☆
()
Ответ на: комментарий от anonymous

Меня звали, кажись?

Лисп прекрасен, им надо пользоваться. Лично я им пользовался, пользуюсь, и буду пользоваться впредь. Он, конечно, не идеален и надо в нём половину переделать. Я переделывал года два, да и сейчас ещё далеко не всё идеально. Например, я сам делал, чтобы find-definition находило файл *.asd. А вчера (sic!) я дописал для себя функцию «искать лисповый идентификатор в файле» (sic!). Но пользоваться лиспом надо всё равно, т.к. только в лиспе есть истинная динамическая разработка (не считая SQL-серверов). А значит, при росте масштаба системы в лиспе сохраняется лёгкость поддержки. Явисты говорят, что в ихней Яве тоже так можно, но, думаю, на поверку это окажется связано таким количеством ограничений, что по сути можно считать неправдой.

Есть только одна область, в которую лисп совсем никак не лезет - это рилтайм, который топик-стартером не заявлен в числе приоритетов. Туда, впрочем, ни один язык со сборкой мусора не полезет, если по-честному. По скорости, лисп, безусловно, вменяем (я имею в виду общую производительность с точки зрения программиста: среда разработки, компилятор, приложение).

Как ни странно, в лиспе не хватает лаконичности. Объём код на лиспе для задачи размера N - это c1*N*log(N), за счёт макросов, в отличие от остальных языков, где макросов, по сути, нет и дело пахнет c2*N^2. Но c1>c2 в несколько раз. Взять хотя бы слово multiple-value-bind. Одного его хватит, чтобы нормльного человек стошнило!

Я с этим боролся и сделал всякие свои фишки, которые позволяют снизить с1 (а multiple-value- я иногда сокращаю до mlvl-), но настоящие лисперы меня за всё это сожгли бы на костре. Хорошо, что я физически им недоступен.

Другое дело, что чем больше живу, тем больше понимаю, что программировать я совсем не умею, да и вообще у меня очень узкая область применения. Так что меня не слушать!

den73 ★★★★★
()
Ответ на: комментарий от den73

И кстати, чтобы два раза не вставать, того, кто поможет подготовить мою библиотеку к публикации, беру в соавторы. Веселее гореть вместе!

Основное:
- symbol-readmacro. Прицепять ридмакросы к символам, а не к буквам. Например, вот так я обращаюсь к firebird из подсказки лиспа:

(fse 1 from rdb$database;

)
А вот так может выглядит описание парсера для meta-parse:

(m:with-stream-meta (...)

(m:matchit m:[ m:! (fuck :off t) ] )

А вот это - дата:

dat1:2011-09-02

<#TIMESTAMP .... >

А вот как прицеплен инфиксный ридер:

inf(2+2)

4

Или вот ещё:

(here-documentc RОднажды в студёную, «зимнюю» пору

(Я из лесу вышел)R)
«Однажды в студёную, \„зимнюю\“ пору
(Я из лесу вышел)»

И никаких не надо #$%&, которые в каждых двух случайно взятых библиотеках почти наверное конфликтуют.

Т.е., не нужно никак мухлевать с readtable, readtable у меня всего один, а когда надо, я импортирую в пакет символы. Это - существенный шаг вперёд в лиспе, и если бы принимали новый стандарт, я уверен, что эта штука бы в него попала. Т.к. macro-character-ам явно не хватает масштабируемости и удобочитаемости.

- локальные nicknames для пакетов. Т.е.,находясь в пакете
foo, можно обращаться к пакету beyond-any-recognition по имени bar,
если в определении пакета foo написано
(:local-nicknames :beyond-any-recognition :bar)

Это тоже фишка, которая должна быть в стандарте. В питоне это называется, кажется, import as.

- запрет на символы с определёнными именами - помогает, когда надо найти момент появления мусорного символа в процессе сборки. Также запрет или варнинг при попытке создания символов в другом пакете с помощью надписи package::symbol.

proga - бороться со скобками. Например, вместо
(flet ((a (x) (+ x 1)))
(let ((z (a 3)))
z))

я, как правило, пишу
(proga
(flet a (x) (+ x 1))
(let z (a 3))
z)

- в полтора раза меньше скобок! От скобочного маразма избавиться в знчительной степени удалось. proga понимает много основных конструкций и её легко расширять (действительно легко). За такую вольность Ъ лисперы хотят обычно меня убить. На 99% лисперов нходится один вменяемый, который считает, что второй вариант лучше первого. А 99% считают, что первый лучше.

- мелкие фишки для asdf, например, при ошибке asdf связан символ, к-рый позволяет сразу открыть файл для редактирования и оформлено это в виде рестарта. Или, например, определение экспортов в пакете в виде длинной строки с квалификатором пакета, что позволяет сразу скакнуть от экспорта к определению символа (а от #:foo не скакнёшь). Или автоматическое разрешение конфликтов во вновь создаваемых пакетах согласно определённой политике (просто оболочка вокруг defpackage, более простая, чем conduit-packages, но показавшая свою полезность).

Кажется, по большому счёту - всё. Но может быть, что-нибудь забыл.

Нужно потестить ещё, проверить работоспособность на нескольких реализациях (по идее, код переносимый, раньше работало на allegro, lispworks, sbcl, ccl и, кажется, ecl). Если не всё везде работает, разделить фишки на переносимые и реализационно-зависимые.

Придумать назвние, менее провокационное, чем cl-fix, и менее персоналифицировнное, чем buddens-tools

И написать мануал.

den73 ★★★★★
()
Ответ на: комментарий от den73

> А значит, при росте масштаба системы в лиспе сохраняется лёгкость поддержки.

«Легкость поддержки» означает, что система хорошо отвечает требованиям extensibility и maintainability. Первое - возможность расширять функциональность минимальными затратами. Второе - эффективно изолировать и устранять ошибки. И то, и другое зависят напрямую от качества архитектуры и реализации, т.е. от квалификации архитектора и разработчиков. А не от возможности «пропатчить такую-то функцию на лету», которая, кстати, тоже та еще палка о двух концах.

Взять хотя бы слово multiple-value-bind.


А как вам long-float-negative-epsilon, pprint-exit-if-list-exhausted, make-dispatch-macro-character, make-string-output-stream или update-instance-for-redefined-class? :)

но настоящие лисперы меня за всё это сожгли бы на костре


О да, это они умеют :)

программировать я совсем не умею, да и вообще у меня очень узкая область применения. Так что меня не слушать!


Полноте. В отличие от большинства местных «лисперов»-пустобрехов, вы применяете лисп на практике и, возможно, даже создали на нем что-то полезное. Кстати, не расскажете ли?

Kuka ★★
()

dib2, хоть это теперь и тред о радарах и БПЛА, хочу сообщить кое-что по теме. А именно - касательно общего кода для desktop- и веб-версий приложения, а-ля Eclipse RCP. Мне тут вспомнилось, что недавний релиз GTK+ 3.2 умеет рендериться в HTML5. Так что подойдет практически любой язык, поддерживающий новый GTK+. Благодаря GObjectIntrospection, этот список теперь включает в себя десятки языков, в том числе и динамические (например, тот же JavaScript в виде Seed и GJS).

Еще есть молодой JVM-язык Fantom со своим UI-тулкитом FWT, который имеет backend'ы в SWT и HTML5 Canvas. Правда, он не динамический.

Kuka ★★
()
Ответ на: комментарий от Kuka

да-да, помню такое.
спасибо за информацию.

p.s. den73 - ты крутой как бутулизм! (С) :)

dib2 ★★★★★
() автор топика
Ответ на: комментарий от Kuka

>«Легкость поддержки» означает, что система хорошо отвечает требованиям

extensibility и maintainability. Первое - возможность расширять >функциональность минимальными затратами. Второе - эффективно >изолировать и устранять ошибки.


Вы слишком легко решаете вопросы философской глубины :-) Можно описать преимущества лиспа в терминах Вашего ответа.

По «изоляции и устранении ошибок». Мне известен один универсальный способ локализации ошибок - это лог и его последующее чтение. В лиспе этот метод легко реализуется именно за счёт возможности переопределить функцию, не останавливая программы. Просто вставляем в нужном нам месте (print) и лог уже готов. Как это будет выглядеть в статических языках, я тоже знаю :-) Правда, я не пользовался gdb, может быть, там это как-то более культурно, чем в визуальных отладчиках от Борланда (кто не знает - я вообще не программист под Линукс, извините :-)

Extensibility - да, зависит от архитектуры, но в лиспе есть такая размерность архитектуры, как макросы (их ещё называют DSL-ями).
Например, если мне нужна хранимая процедура на сервере Firebird,
я прямо так и пишу посреди дефунов:
(def-stored-procedure :args ... :vars ... :returns ... :body
(fbody a=b; suspend;
^))

Помимо того, динамическая среда и интерактивность очень сильно облегчают прототипирование, т.е. простые идеи можно попробовать за считанные минуты.

А как вам long-float-negative-epsilon, pprint-exit-if-list-exhausted,

make-dispatch-macro-character, make-string-output-stream или


update-instance-for-redefined-class? :)


Из перечисленых названий разве только long-float-negative-epsilon мог бы заставить меня поморщиться, но я не могу придумать, как можно было бы назвать его иначе.

Чем слово чаще используется, тем оно должно быть короче (хотя я встречал как минимум одного лиспера, который даже это оспаривал). multiple-value-bind - это примитив для возврата из функции нескольких значений, оно должно быть коротким. А перечисленные Вами слова используются не столь часто.

Полноте. В отличие от большинства местных «лисперов»-пустобрехов,

вы применяете лисп на практике и, возможно, даже создали на нем


что-то полезное. Кстати, не расскажете ли?


Я думаю, Вы зря судите о людях, о которых ничего не знаете. Расскажу когда-нибудь при случае, моё выступление что-то затянулось уже.
Впрочем, я уже об этом писал, если интересно, см. мои сообщения со словом M_AS.

den73 ★★★★★
()
Ответ на: комментарий от anonymous

> > Я с этим боролся

А чего бороться-то? Есть такая штука - autocomplete называется.

С добрым утром. Вообще-то, в основном код приходится читать, а не писать. С этим как? автокомплит для глаз в аптеку уже завезли?

den73 ★★★★★
()
Ответ на: комментарий от den73

Кстати, я вру. В Дельфи можно тоже делать лог без пересборки. Ставишь брекпойнт и там в свойствах можно задать выражение, которое нужно вычислить и поставить галочку «выводить в лог». При этом, брекпойнт не будет приводить к остановке программы, а будет выводит в лог. Всё это требует несколько кликов мышью и не так удобно, как в лиспе. Но пользоваться можно.

Вот потому-то я и люблю форумы, сначала наврёшь что-нибудь пафосное, потом проверишь себя и окажется, что не знал что-то важное и полезное.

С другой стороны - это всего лишь лог. Поменять код без пересборки нельзя.

den73 ★★★★★
()
Ответ на: комментарий от den73

> С добрым утром. Вообще-то, в основном код приходится читать, а не писать. С этим как?

С этим все как раз прекрасно - с точки зрения чтения длинные и понятные идентификаторы всегда более предпочтительны, чем коротки и непонятные, т.к. ускоряют чтение и понимание кода.

anonymous
()
Ответ на: комментарий от anonymous

Замечательно! Вот, в качестве иллюстрации к моим страшилкам про лисперов, нашёлся ещё один анонимный лиспер, который не понимает, почему предлоги и союзы в человеческом языке состоят из одной-трёх букв. Но нет, я не буду об этом спорить. Доказать твою тупость предоставляется тебе самому в качестве упражнения.

den73 ★★★★★
()
Ответ на: комментарий от den73

> почему предлоги и союзы в человеческом языке состоят из одной-трёх букв.

Чтобы говорить быстрее. Но какое отношение это может иметь к _программному коду_? Вы программы на лиспе собрались сыну на ночь читать - вместо сказки?

anonymous
()
Ответ на: комментарий от den73

И вообще непонятно, при чем тут лисп. Во всех языках подобные идентификаторы - не редкость.

anonymous
()
Ответ на: комментарий от anonymous

Короткие и понятные идентификаторы лучше длинных и понятных. Особенно если это символы, так при беглом осмотре можно отличить одну сущность от другой. А понятны, со временем, становятся все стандартные идентификаторы.

son_of_a_gun
()
Ответ на: комментарий от den73

>Например, если мне нужна хранимая процедура на сервере Firebird,

я прямо так и пишу посреди дефунов:

(def-stored-procedure :args ... :vars ... :returns ... :body


(fbody a=b; suspend;


^))



это уже наверное будет офтопично, но тем не менее, если я правильно вас понял, то я прямо сейчас трах^Wизобретаю подобную фишку на этом чудном C++, в голову лезут всякие полудурацкие мысли про генерацию кода. Не могли бы вы подробнее в деталях рассказать как это делается в Lisp? Какие плюшки можно получить?
Благодарю.

dib2 ★★★★★
() автор топика
Ответ на: комментарий от dib2

>в деталях рассказать как это делается в Lisp? Какие плюшки можно получить?

Всего несколько слов, но у темы появился реальный шанс выйти в TOP с 43-мя и более страницами:)

Если расскажите про фишки и мысли, то может и я смогу чем помочь, по крайней мере применительно к CL.

А да еще есть http://lisper.ru . Это так к слову.

antares0 ★★★★
()
Ответ на: комментарий от dib2

(den73)

>это уже наверное будет офтопично, но тем не менее, если я правильно >вас понял, то я прямо сейчас трах^Wизобретаю подобную фишку на этом >чудном C++, в голову лезут всякие полудурацкие мысли про генерацию >кода

В С++ это не делается никак. Поскольку делать всё же надо, пишется внешний препроцессор, который идёт по исходнику, вычитывает из него def-stored-procedure и превращает их во что-то.

Вот первый попавшийся пример.
http://docs.nojabrsk.ru/informix/english/docs/dbdk/infoshelf/esqlc/01.fm2.html

Также в Qt, как Вы знаете, не смогли обойтись внутренними средствами чудного С++ и придумали moc

http://ru.wikipedia.org/wiki/Метаобъектный_компилятор

Ещё есть M4, который с трудом, но позволяет делать вычисления во время
компиляции, с помощью вызова встроенных функций и обращения к внешним командам ОС.

Ещё ключевые слова - SWIG, Doxygen. Все это - разные препроцессоры (сколько ненужных трудозатрат!)

Всё это, конечно же, гемор. Тем лисп и хорош, что в нём все это делается элементарно.

Что делается в лиспе?

Вот представьте себе
#define ADD_FOO(x) BAR ## x

## - это некая операция, которая доступна внутри макропроцессора
С и недоступна вне его.

В лиспе, в принципе, всё то же самое, но внутри макропроцессора доступно не только #,##,+ и т.п., но и вообще ВСЁ ТО ЖЕ САМОЕ, что во время исполнения. При этом синтаксис позволяет нам указать, что мы хотим сделать с данной операцией - выполнить её во время расширения макроса или во время выполнения программы. В переводе на С это было бы что-нибудь типа:
#define ADD_FOO(x) add_strings(x,«BAR»);
#define ADD_FOO_COMPILE(x) at_compile_time(add_strings(x,«BAR»))

Вызывается лисповый макропроцессор, как и сишный, во время компиляции. Но типичный сценарий жизни лисп-системы выглядит так:
1. Запустили начальный образ (минимальный рантайм).
2. Скомпилировали файл и загрузили результат компиляции.
3. Повторить пункт 2 для других файлов.

Если в одном файле определена какая-то процедура, то во время компиляции последующего файла она уже доступна для исполнения (а не просто для подстановки), поэтому можно сделать так, чтобы #define внутри себя вызывала эту процедуру. Так мы получаем расширяемый компилятор за 5 копеек.

Конкретно данный макрос определён примерно так:
(defmacro def-stored-procedure (&key args vars returns body)
(def-stored-procedure-as-fun args vars returns body)
)

где def-stored-procedure-as-fun - некая ранее определённая функция. Она выполняется во время макрорасширения и обращается к серверу firebird.

Расплата за удобство - одна - не слишком-то удобно искать ошибки.
Но лично я (и многие другие) готовы платить такую цену.

anonymous
()
Ответ на: комментарий от kernel

Вот за что люблю наших работников ВПК это вот за такой подход к дискуссии.

1. я не работник ВПК
2. хочешь познакомиться с дядями «откуда надо»? если - да, продолжай болтать, я не хочу

shty ★★★★★
()
Ответ на: комментарий от kernel

при чем, фактически, в условиях приближенных к бою

почему именно «к бою», это как то сужает область применения БПЛА, а мо вроде пока тут рамки не ставили, не?

Нам достаточно уровня распознавания «движущаяся хреновина размером с танк», "... хреновина размером с автомобиль", "... хреновина размером с человека". Потом можно сделать серию увеличенных кадров этой обнаруженой хреновины, которые и послать оператору.

это не распознавание, это обнаружение, чувствуете тонкую разницу?

shty ★★★★★
()
Ответ на: комментарий от kernel

«Гнать картинку как есть» это когда камеру вертит оператор и в ее видеопоток смотрит.

причём тут оператор, речь идёт о передаче видеопотока на землю, а не о том за какие ручки тот дёргает

shty ★★★★★
()
Ответ на: комментарий от kernel

Нет, к твоему сожалению, я как раз представляю.

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

shty ★★★★★
()
Ответ на: комментарий от son_of_a_gun

> А понятны, со временем, становятся все стандартные идентификаторы.

mlvl - офигенно понятно. Все равно человек читает идентификатор целиком, а не по буквам, так что долина значения не имеет. До того, как появится привычка, полное название предпочтительнее, т.к. из него сразу ясно, что идентификатор делает. После появления привычки - разницы никакой.

anonymous
()

>Python

Да хватит уже насиловать поделку Гвидо. Ну пьяный был, ну понаделал делов, что уж.

Hexs
()
Ответ на: комментарий от shty

> почему именно «к бою», это как то сужает область применения БПЛА, а

мо вроде пока тут рамки не ставили, не?


Я имел в виду что в бою и в подобных условиях враги обычно двигаются. Что нам изменяет конкретную задачу.

это не распознавание, это обнаружение,

чувствуете тонкую разницу?



http://ru.wikipedia.org/wiki/Теория_распознавания_образов

Это именно распознавание. Задача обнаружение потенциальной цели при помощи камеры является частью дисциплины «распознавание образов» (или как это иногда называют «распознавание изображений»).

kernel ★★☆
()
Ответ на: комментарий от shty

> прости, но нет, не представляешь, по крайней мере если говорить про

нашу технику


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

kernel ★★☆
()
Ответ на: комментарий от kernel

Это именно распознавание. Задача обнаружение потенциальной цели при помощи камеры является частью дисциплины «распознавание образов» (или как это иногда называют «распознавание изображений»).

никакая часть процесса распознавания не может быть признана тождественной всему распознаванию в целом, думал это очевидно

shty ★★★★★
()
Ответ на: комментарий от kernel

Ты вместо того что бы обьяснить в чем я неправ, а в ходе объяснения понять что ты тупо меня не так понял,

знаешь, когда яйцо с душком, жарить его чтобы понять что что-то не так - это совсем не обязательно

начинаешь рассказывать про такие приборы про которые ты нам не расскажешь

приборы, какие приборы? мы только концепций слегка коснулись

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

ахаха, простите, но я не настолько наивен, да и мир несколько более многогранен нежели Вы себе представляете

//кстати, если бы у Вас был опыт работы в соответствующей области Вы бы не стали говорить в таком ключе, имхо

shty ★★★★★
()
Ответ на: комментарий от shty

> никакая часть процесса распознавания не может быть признана

тождественной всему распознаванию в целом, думал это очевидно


Что ищем(распознаем) то и находим(распознается. Ставим задачу «распознавать потенциальные цели класса `бронетехника`» - их и распознаем.

kernel ★★☆
()
Ответ на: комментарий от shty

> знаешь, когда яйцо с душком, жарить его чтобы понять что что-то не

так - это совсем не обязательно


Ну все - понеслось. Вы в дверь когда проходите, у вас ЧСВ дверную раму не сносит?

приборы, какие приборы? мы только концепций слегка коснулись


Смеятся тут. Это была цитата из смешной юмористической песни «Космонавты» ВИА манго-манго, трищ майор.

ахаха, простите, но я не настолько наивен, да и мир несколько более

многогранен нежели Вы себе представляете



Если вы сидите в нии торфа и говна или в коммерческой конторе выполняющей соответствующую работу по подряду, то вы «сотрудник впк». Если у вас есть какой то инновационный метод получения информации «о которой нельзя говорить» или вы американский шпион так так и скажите.

кстати, если бы у Вас был опыт работы в соответствующей области Вы

бы не стали говорить в таком ключе, имхо



В каком ключе? Вы там напускаете туману на какую то очевидную хрень вызывающую непонимание и буквоедствуете.

kernel ★★☆
()

Ruby

Неожиданно, но Ruby подходит под все задачи. Жрет он столько же сколько жрет Python, остальное это мифы. Не нужно приводить в примеры рельсы первой свежести, ок?

Да и вообще, я оскорблен, что тут о нем почти ни слова нет..

umren ★★★★★
()
Ответ на: Ruby от umren

>Жрет он столько же сколько жрет Python, остальное это мифы

Жрет он больше чем питон, а так же обладает синтаксисом гораздо более худшим нежели у питона.

И вообще, питон - то понятно, его киллер-фича это красивейший и понятнейший синтаксис. А вот зачем вообще нужен руби, если есть Perl который гораздо его быстрее, остается загадкой.

Siado ★★★★★
()
Ответ на: комментарий от Siado

Perl жив!

Синтаксис это абсолютно индивидуально, и тут спорить я не собираюсь, но «волшебный» синтаксис Python'a по мне слишком переоценен, никакая это не киллер фича, просто об этом слагают легенды - люд верит и ведется.

Perl5 уже давно вытеснен на всех рубежах и учить его смысла ТС'у я не вижу чуть менее чем полностью, если только есть желание выступать в Obfuscator contest'e. Perl6 - мертворожденный проект который должен был выйти одновременно с DotNet - тогда бы выстрелил, сейчас поздно, все места заняты.

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

Python - более слабые позиции в вебе, чем у Ruby, более подходит для запиливания говнокода в PyGTK и wxPython (сарказм если что)

по пожиранию памяти они разняца не более чем в 10% в разных ситуациях с перевесами в ту/иную сторону, оба имеют сильную стандартную библиотеку, но гемы у Ruby поинтереснее будут (наследие Perl однако)

Так что не списывайте со счетов, просто у нас что то много питонистов развелось на самом деле :)

umren ★★★★★
()
Ответ на: Perl жив! от umren

>Python - более слабые позиции в вебе, чем у Ruby

На чем основано сие мнение?

И таки синтаксис не стоит недооценивать, киллер фича как раз от того, что гораздо проще заниматься совместной работой, отлаживать проект и т.д.

Siado ★★★★★
()
Ответ на: комментарий от Siado

>И таки синтаксис не стоит недооценивать

В пень питоний синтаксис - от него тянет блевать гораздо более, чем от тормозов и гил-а. «Киллер-фичи» питона - куча батареек в комплекте и а-ля бейсиковская простота. Они-же его и угробят.

yyk ★★★★★
()
Ответ на: комментарий от Siado

Дык Github же!

1) http://github.com/rails/rails - over 9000 watchers 2) http://github.com/django/django - 2.5k 3) google trends -> http://www.google.ru/trends?q=ruby on rails, python django 4) зайди на hh.ru и посмотри по количеству работы 5) посмотри на международные порталы по фрилансу

umren ★★★★★
()
Ответ на: комментарий от Siado

Perl быстрый? только если голый!

По поводу скорости Perl'a кстати.. Если брать Modern Perl который сейчас пропагандируется коммьюнити то в скорости он будет сливать полностью ООП языкам как Python/Ruby/еще чонидь

Если брать голый - то да, быстр, оптимизирован, без модулей когда.

umren ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.