[*nix]Посоветуйте, какой язык изучать?

Fragaria

Хочется заботать какой-нибудь язык программирования. А то кроме PHP с JavaScript и когда-то давно изучавшихся Pascal/Delphi и Basic не знаю ничего. Ну bash немного ещё, хотя, стыдно признаться, когда надо написать какой-нибудь более-менее серьёзный скриптик в линухе для себя, пишу всё же на PHP, потому что sed/awk не осилил, а без них никуда.
Цели - двойные. Перое - писать что-нибудь для себя и, возможно, для OSS-сообщества. Второе - чтобы могло пригодиться в работе, в трудоустройстве.
Среда, для которой буду писать - Linux.
Пока ограничился выбором между C++, Perl и Python, хотя ещё мне безумно нравится Lua. Java не хочу. С++ используется повсеместно, и, казалось бы, это идеальный выбор, но 1) очень большие накладные расходы для написания простых вещей, особенно с GUI. 2) сложность первоначального изучения (в том смысле, что для того, чтобы этот язык смог реально помогать в работе и был бы преимуществом при трудоустройстве, ботать нужно очень много). Тут в поле зрения попадает питон, с его биндингами к Qt, но немного смущает то, что он редко используется при разработке в России (то есть маловероятно, что он потребуется при трудоустройстве а также его семантически значимые отступы :) Опять же, есть широко распостранённый Perl, но он плохо читается, и что-то я не уверен, что к нему есть распространённые Qt-биндинги.
Lua привлекает изяществом языка и тем, что он юзается в такой интересной области разработки, как геймдев, но опять же отсутствующие (?) биндинги к GUI (Qt слабая распространённость и отсутствие у меня представления, как на нём можно писать для себя и как он может пригодиться в будущем...
Короче, расскажите, что ботать? :)

kokoc88

геймдев
Геймдев не только самая интересная, но и самая дешёвая область разработки. Lua сам по себе бесполезен, геймдеву интересно его сочетание с Си++ (luabind FTW).
Perl

sergeikozyr

пистон

pilot

Опять же, есть широко распостранённый Perl
Перл умер. RIP.

serega1604

>опять же отсутствующие (?) биндинги к GUI (Qt)
есть http://luaforge.net/projects/wxlua/ , не Qt, но все же.

ppplva

питон [...] редко используется при разработке в России
Именно в России? У тебя есть какая-то статистика, или так, на глаз?

Sharp

Я рекомендую Perl.
Насчет твоих сомнений насчет чтения и количества библиотек, тебе стоило посетить конференцию HighLoad, где выступал Tim Bunce и вкратце развеял эти и другие мифы про Perl.
Вкратце насчет читабельности: есть такая вещь как Perl Best Practices, где написано как правильно писать на языке Perl чтобы это потом было удобно читать. А если программу писать плохо, то ее будет неудобно читать на любом языке.
Насчет библиотек, есть perlQT, но он датирован 2003-ом годом, хотя есть куча GTK библиотек для Perl-а. Но, честно говоря, никогда не занимался разработкой графического интерфейса, а вот прикладных библиотек под Perl полным полно: тут тебе и различные сетевые протоколы, и подключения к разнообразным базам данных, и различные файловые форматы, и разнообразные системные библиотеки.

Sharp

Хорошо, опять же сошлюсь на Tim-а Bunce и на его доклад: http://www.slideshare.net/Tim.Bunce/perl-myths-200909 ссылаюсь на 15-ый слайд.
Я не знаю, насколько Ежику интересны Google Trends, но если он ищет язык для работы, до Tim оперирует статистикой вакансий. И по ней Perl живее Python и Ruby.

enochka1145

// Короче, расскажите, что ботать?
Рассказываю.
Для начала определись, в какой отрасли ты хочешь работать. От этого во многом зависит, C++, J2EE, или PL/SQL какой-нибудь.
Если хочется работать в геймдеве - полный вперёд, только учти, что в России много не заработаешь (зайди на www.dtf.ru и убедись). Плюс забудь про Linux. (Я так понял речь об играх с большой буквы И, вроде Half Life, а не о casual-малютках.)
Мой совет - учи C++. Самый универсальный и успешный язык на сегодняшний день. После него выучишь любой другой, если возникнет необходимость. Чтобы освоить Lua, вообще достаточно спинного мозга.
Чтобы освоить С++ на отличном уровне, достаточно вдумчивого прочтения "Философии С++" (Thinking in C++) - отличная, достаточно простая для чтения книга. (Плюс опыт, конечно.) Я прочитал несколько книг (кроме Страуструпа) и в конце концов убедился, что Thinking in C++ вполне достаточно. Так что освоение С++ - вполне посильная задача, не дрейфь.

ermsoft

+1 за Perl.
Не надо слушать тех, кто говорит, что perl мёртв. Это очень-очень плохой миф, который, как любое подобное утверждение, очень сложно опровергнуть, потому что оно стало мемом. Если perl и умрёт в конце концов, то из-за этих слухов, которые распускают те, кто толком perl не знают.
Биндингов к Qt у него, правда, в самом деле нет популярных, хотя кое-что все же есть. Для однострочников perl незаменим (при этом может заменить awk и sed). Для анализа текстов - тоже.
На perl best practices зацикливаться не обязательно, там много спорного. Но современный perl очень читаемый язык. На мой вкус - куда читаемее раскрученного python'а.
Из минусов - отсутствие нормально работающих тредов, хотя в 5.10 это побороли на уровне языка, косяки остались в отдельных библиотеках, и еще то, что непонятно, учить ли perl5, когда скоро выйдет perl6. Наверное, начинать все же надо с 5-го, он никуда не денется еще лет 10.

Gaishnik

После него выучишь любой другой, если возникнет необходимость.
Без него ты тоже выучишь любой другой, если возникнет необходимость.

pilot

Не надо слушать тех, кто говорит, что perl мёртв. Это очень-очень плохой миф
...который придумали злые пришельцы, ага.

Ivan8209

> Хочется заботать какой-нибудь язык программирования.
Фортран
---
"Рот фронт, группенфюрер..."

agaaaa

Ocaml, Haskell.
ООП ты уже знаешь, поботай ФЯП, вдруг вставит.

Sharp

Хочешь реальных примеров из реальной жизни? Легко.
Ты вроде как в Рамблере работаешь, да? Открываем вакансии Рамблера: требуется Perl-программист, знание Perl-а стоит доп. требованием почти во всех вакансиях. Знание Python-а только как доп. требование для Perl-программиста.
Зайдем на вакансии Яндекса: требуется Perl программист, знание Perl-а как доп. требование на многих технических позициях.
Зайдем на вакансии Mail.ru: знание Perl или Python практически по всем техническим вакансиям.
Откроем какой-нить сайт с вакансиями о работе: http://hh.ru или http://jobs.ru и поищем по слову Perl. Количество вакансий достаточное, чтобы было из чего выбирать.
Теперь немного из своего опыта: сейчас я пишу программы для управления оборудованием Juniper. Библиотека для работы с этим оборудованием идет на двух языках программирования: C и Perl.
Еще немного от себя: в сентябре ходил на собеседование в Касперского. Там меня спрашивали насколько я хорошо знаю Perl.
Я не хочу сказать, что Perl — самый лучший язык для всего на свете. В web-программировании его уже давно потеснили другие языки, но в прикладном программировании и местами в системном Perl очень востребован и очень полезен.

Sharp

Ты лучше уточни, чем хочешь заниматься.
Может ты с детства мечтал писать драйвера для устройств, тогда тебе стоит смотреть на C или ассемблер (может еще есть что-нить более подходящее, давно не следил за этой областью).
Или тебе так сильно нравится Lua, что готов ради него пойти на все. Тогда просто найди вакансию Lua-программиста и вперед, забей на все советы и предрассудки обывателей форума.
А может ты хочешь программировать для научных проектов? Тогда уже надо смотреть на Фортран, Lisp, Maple (первый и последний от меня хотели в аспирантурах, так что востребованность в них тоже есть). Хотя не уверен, насколько ты можешь помогать OSS сообществу.
Или ты хочешь писать web-приложения, тогда PHP ты уже знаешь, можно и на нем писать. Хотя Python и Ruby набирают популярность.
Ну или вдруг ты решишь заняться большими объемами данных, их обработкой, анализом. Тогда SQL тебе в помощь.
И не приведи господь тебя заняться бухгалтерией. Единственная туда дорога 1С, но это дорога проклята давно и на много лет вперед. :)

asvsergey

И не приведи господь тебя заняться бухгалтерией. Единственная туда дорога 1С, но это дорога проклята давно и на много лет вперед. :)

А что оно уже под *nix работает?

Sharp

Это так, уже было в качестве трепа, и здесь я отошел от темы.
Действительно, 1С с nix-ами плохо соотносится. Опять же оговорюсь, что wine-ы и самба-шары я здесь не рассматриваю. И даже не хочу затрагивать вопрос где оно лучше работает.
Мораль была простая — если выбирать конкретный язык, то надо знать конкретные цели.

Fragaria

Сейчас я работаю в области компьютерной телефонии, голосовых сервисов, технологий генерации и распознавания речи, но это довольно узкая специализация... Правда, с предстоящим стартом 3G в Москве ситуация должна измениться, и область применения знаний должна будет расшириться, но я пока слабо себе представляю, что из языков в этой области может понадобиться...

Sharp

Ну вот, уже совсем другое дело. Если тебе это интересно, и ты хочешь и дальше заниматься и развиваться в этой области, тогда можешь просто игнорировать все мои советы, данные выше — я абсолютно некомпетентен в данной области.
p.s.
ради интереса зашел на сайт Центра Речевых Технологий, у них в технических вакансиях требуется или C++, или C#.

kruzer25

Пока ограничился выбором между C++, Perl и Python, хотя ещё мне безумно нравится Lua. Java не хочу
А C#?

Dasar

А C#?
под *nix - есть компании, которые профессионально пишут на C#?

Fragaria

А C#?
А гвозди?

ramsit



Цели - двойные. Перое - писать что-нибудь для себя и, возможно, для OSS-сообщества. Второе - чтобы могло пригодиться в работе, в трудоустройстве.
ну тут как бы второе значительно ограничивает пространство поиска. Для первого пойдет и brainfuck, а для второго (чтобы найти работу здесь и сейчас) - скорее всего не более чем вышеназванные перл, питон, жаба и ц++.
Жабу ты не хочешь, ц++ убивает мозг (мое лично мнение, подтвержденное наблюдениями). С перлопитоном ситуация неднозначная. Выход перл6 грозит перлокапцом, с учетом существующего объема кода новый перл использовать не будут, и у языка нет перспективы развития. Питон кажется наиболее нормальным вариантом, но и с ним не все однозначно. Хотя, перл ботается быстро, и лет несколько с ним точно работу найдешь.
Из языков стройного замысла с ОКамлом вроде трудоустройство относительно легкое.

pilot

Ты вроде как в Рамблере работаешь, да?
Уже нет.
Открываем вакансии Рамблера: требуется Perl-программист, знание Perl-а стоит доп. требованием почти во всех вакансиях. Знание Python-а только как доп. требование для Perl-программиста.

Можно списочек крутых веб-проектов от Рамблера? :o
Зайдем на вакансии Яндекса: требуется Perl программист, знание Perl-а как доп. требование на многих технических позициях.

Я на днях спрашивал у Бобука про языки разработки в Яндексе, он сказал что основной — С\С++, следующий — Python. Кому верить?
И кстати Бобук рассказывает про Перл то же что и я в этом треде.
Зайдем на вакансии Mail.ru: знание Perl или Python практически по всем техническим вакансиям.
в сентябре ходил на собеседование в Касперского. Там меня спрашивали насколько я хорошо знаю Perl.

Наше IT такое it :(
В общем как: если хочется работать не "здесь и сейчас", а и через пару лет, то Perl лучше не учить. Уже сейчас hr-ы пищат что перлопрограммисты редки, дороги и не особо квалифицированы.

Fragaria

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

pilot

В треде уже было слово "Кобол", если тебе нужен такой вариант.

Fragaria

Не, я просто обратил внимание на обратную сторону аргумента :)
Пока вообще склоняюсь к питону...

enochka1145

Может, ты сначала разберёшься, чем хочешь заниматься? А то может и латынь сойдёт? :)

pilot

Уже сейчас hr-ы пищат что перлопрограммисты редки, дороги и не особо квалифицированы.
Кстати вот как раз вопрос о чем говорит статистика роста вакансий на перле — может программистов все тяжелее искать =)

Serab

Наверное, начинать все же надо с 5-го, он никуда не денется еще лет 10.
Я бы даже за монументальный C++ на 10 лет не стал бы загадывать. А ты про *пятый* перл :grin:

Sharp

Уже сейчас hr-ы пищат что перлопрограммисты редки, дороги и не особо квалифицированы.
А остальные программисты часты, дешевы и высоко квалифицированы?
С проблемой квалификации я сталкиваюсь достаточно часто, хотя никакой не руководитель и не HR. Часто люди знают лишь какую-то малость и способны лишь повторить где-то увиденное или прочитанное. Но при этом они слабо ориентируются в технологиях и способах, поэтому не способны не то чтобы придумать что-то свое, но даже объяснить, почему они сделали так как сделали.
Причем это не обязательно Perl программисты: я встречал и разных программистов, и системных администраторов, и сетевых инженеров, и сборщиков компьютеров.
Так как на IT-шников мало где учат, а зарплаты в этом секторе неплохие, вот и получается, что заниматься IT стало много людей с низкой квалификацией.

Werdna

В общем как: если хочется работать не "здесь и сейчас", а и через пару лет, то Perl лучше не учить. Уже сейчас hr-ы пищат что перлопрограммисты редки, дороги и не особо квалифицированы.
Какие же ты идиотские советы даешь.
Технологии не важны, язык не важет. Важно знать хорошо и уметь писать, уметь придумывать. А на чем — разницы нет.
Хорошо знаешь перл? Пиши на перле, а популярность значения не имеет. Ты её же создавать будет.

pilot

Хорошо знаешь перл? Пиши на перле, а популярность значения не имеет. Ты её же создавать будет.
Спасибо, плавали.
Пока ты будешь наступать на грабли в библиотеках и писать библиотеки самостоятельно:

I wrote 20 short programs in Python yesterday. It was wonderful. Perl, I'm leaving you.

Sharp

Ну конкретно в моем опыте все наоборот.
Когда года три назад мне надо было написать программу, которая по telnet-у обходила некоторые устройства, собирала бы с них информацию и дальше как-то обрабатывала, я начал писать ее на Python-е (было интересно попробовать новый для меня язык).
Я нашел библиотеку для работы с telnet-ом в Питоне, но я потратил пару дней на написание патчей для нее, прежде чем она у меня заработала. И обидно даже, что ошибки были больше такого плана, что в одном месте используется шаблон, который можно передать в функцию, а несколькими строчками ниже для аналогичных целей какая-то жестко закодированная строка.
После того, как я пропатчил библиотеку, дописал программу до конца, и начал натыкаться на ошибки в библиотеке для работы с Postgres-ом, я отложил Python в сторону и часа за четыре переписал все на Perl.

oliver11

Когда года три назад мне надо было написать программу, которая по telnet-у обходила некоторые устройства, собирала бы с них информацию и дальше как-то обрабатывала
Для таких вещей очень рулит Tcl и Expect.
Вообще, в том, что касается работы с сокетами, процессами (через пайпы текстовыми файлами, python ИМХО показывает себя довольно низкоуровневым языком.

ermsoft

Я на днях спрашивал у Бобука про языки разработки в Яндексе, он сказал что основной — С\С++, следующий — Python. Кому верить?
И кстати Бобук рассказывает про Перл то же что и я в этом треде.
Бобук предвзято относится к Перлу. У Яндекса достаточно на нем проектов, включая выдачу поиска.
I wrote 20 short programs in Python yesterday. It was wonderful. Perl, I'm leaving you.
Ну вот тебе 3 стрипа про perl с того же xkcd. Третий свежее того, который про питон :)
Я, впрочем, не спорю, что perl теряет популярность. Но, во-первых, не из-за качества языка, а из-за этих дурацких мифов, основанных на коде десятилетней давности, а во-вторых, на количестве хороших библиотек это пока никак не сказывается.

kruzer25

под *nix - есть компании, которые профессионально пишут на C#?
Что значит "под *nix"?
Первое, что пришло в голову (что мы сами используем; правда, не C#, но тем не менее) - FogBugz, кроссплатформенное ASP.NET приложение, почти официально ("FogBugz 7 for Unix is not yet available, but coming soon. It will run on recent versions of CentOS, Fedora Core, Red Hat Enterprise Linux, Debian, and Ubuntu.") поддерживается под линуксом, где у нас и работает.

doublemother

Фанатам хаскелла и лиспа тоже стоило бы обратить свой взгляд на перл :) Цитата из туториала по ocaml'у:
The fact is that Perl is actually quite a good functional language.
Хороший мультипарадигменный язык, с до сих пор непревзойденными регэкспами... странно было бы думать, что он умирает)

Dasar

Что значит "под *nix"?
под mono

kruzer25

под mono
fogbugz у нас именно под моно и работает.

ramsit


Фанатам хаскелла и лиспа тоже стоило бы обратить свой взгляд на перл :) Цитата из туториала по ocaml'у:
В ответ на:
The fact is that Perl is actually quite a good functional language.
Хороший мультипарадигменный язык, с до сих пор непревзойденными регэкспами... странно было бы думать, что он умирает)
ну в цитате все-таки функциональный, а не мультипарадигменный. и это тоже наглая ложь. в нем только элементы функциональности. даже лисп нельзя назвать функциональным.
регекспы непревзойденные, но точно такие же реализованы в виде библиотек (pcre) к большому количеству языков.
он не умирает, у него перспективы развития нет.
а фанатам лиспа/хаскелла никакой перл не нужен, ибо они считают лисп/хаскелл вершиной языкостроения :)

ermsoft

А Parrot - это не перспектива развития?
Ну или если говорить про perl5, то Moose, который изменил весь код на перле за последние пару лет до неузнаваемости.
Или POE, тоже свежий проект.
Кстати, а у каких языков эта перспектива развития есть? У Python, наверное, разработчики которого долго трудились и наконец выпустили python 3000, в котором самое заметное изменение - это то, что после print надо ставить круглые скобки.

apl13

даже лисп нельзя назвать функциональным.
По какой же причине?

ramsit

Кстати, а у каких языков эта перспектива развития есть?
[lisp_fan_mode]
Ну например, lisp. За 50 лет он ни разу не устарел, т.к может все, что умеют сегодня другие языки. При том, что стандарт common lisp существует в неизменном виде с 1994 года.
[/lisp_fan_mode]

ermsoft

Так перспектива развития или "нам и так хорошо"? :)
Ничего не имею против lisp'а, потому что почти ничего про него не знаю.

ramsit



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

ramsit


 
Так перспектива развития или "нам и так хорошо"? :)
[troll]
там metaobject protocol и истинные макросы => ему не нужно развиваться, т.к. он заранее умеет все, что можно придумать. :)
[/troll]
в сравнении с другими языками это можно считать развитием

apl13

разве в нем нет побочных эффектов?
А они как-то мешают функциональности?
Да, есть еще Pure Lisp.

ermsoft

Смотря как определяется "все, что можно придумать". На семантическом уровне - верю. А на синтаксическом, там есть возможность синтаксис языка поменять?
PS: Не спора ради, уже ясно, что я здесь никого не убежду ни в чем, но все же - Meta Object Protocol и расширяемость языка в Perl 5.

ramsit

тоже не хочу переубеждать, но лисповые макросы позволяют добавить любые мыслимые и немыслимые конструкции. например, элементы синтаксиса того же перла.
по поводу семантики.
в sicp описан интерпретатор scheme в вычислением аргументов call-by-name (ленивым). Я недавно писал интерпретатор scheme, который умеет работать одновременно с call-by-value (аппликативно call-by-name (в т.ч. с мемоизацией call-by-reference (по ссылке, как в паскале и все это в динамическом или лексическом окружении %)
Добавление этих возможностей заняло что-то порядка 30 строчек кода.
вот это называется расширяемость.

ramsit


А они как-то мешают функциональности?
Да, есть еще Pure Lisp.
ну как бы да.
Специально зашел в английскую википедию, хотя не особо ей доваряю.
Purely functional functions (or expressions) have no memory or I/O side effects
строго функциональных языков не так уж много, на самом деле.

kruzer25

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

ramsit

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

kruzer25

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

agaaaa

На ФЯПах компиляторы писать удобно.

Serab

синтаксические анализаторы или именно компиляторы?

psihodog

Добавление этих возможностей заняло что-то порядка 30 строчек кода.
А длины какой? :grin:
тоже не хочу переубеждать, но лисповые макросы позволяют добавить любые мыслимые и немыслимые конструкции. например, элементы синтаксиса того же перла.

а для коммерческого языка программирования это хорошо?

pilot

При том, что стандарт common lisp существует в неизменном виде с 1994 года.
Угу, сначала в стандарт запихали огромную кучу мусора, а потом радуются что его не надо менять.
Да, Лисп умеет все, только: под него нет библиотек, глюкавые компиляторы, замусоренный синтаксис.
Как красивый язык "для души" тогда уж лучше Scheme, а для коммерческой разработки не годится ни один.

kruzer25

А какая разница?
Что-то на входе, что-то на выходе.

Serab

так про любую программу можно сказать, значит ФЯ отлично подходит для написания любых программ, но так не сказал, а будь это действительно так, он бы сказал «для любых». Пришли к противоречию. Значит посылка неверна. Какая? Та, что в посте, на который я отвечаю.
Получили, что ты гонишь.

kruzer25

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

ramsit



А длины какой? :grin:
не больше 80 символов :!
а для коммерческого языка программирования это хорошо?
common lisp очень редко но столь же метко используется для коммерческих задач. примерные сферы его профессионального применения можешь посмотреть здесь

pilot

а для коммерческого языка программирования это хорошо?
Ну, про макросы вообще сказано [в On Lisp по-моему]: "Можете не использовать макросы — не используйте"

apl13

под него нет библиотек
Ну так-таки и нет.

pilot

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

apl13

Ты знаешь про Лисп что-то, чего не знаю я?
Возможно.

ramsit



под него нет библиотек
вот тебе тонна кода
если лениво это читать, хотя бы сюда зайди.
ты говоришь, что некоторое время писал коммерческий проект на common lisp и даже видел людей, которые делали то же самое. тот проект, насколько я понял, провалился, и ты хочешь винить в этом язык, на котором писал. Но яйца хорошему танцору мешать не должны. :)
а про синтаксис вообще жесть, ибо:
* "синтаксис" в лиспе - это только открывающая и закрывающая скобочки
* строго говоря, синтаксиса в лиспе нет, равно как и кода. Программа на лиспе - это данные, точно такие же, как xml.

alfadred

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

kruzer25

А какая разница, просто есть 2 "входа-выхода": веб-морда и база данных
Ну имхо всё-таки разные вещи, когда тебе дают пачку данных на входе, ты их обрабатываешь и выдаёшь пачку данных на выходе, или когда тебе дают какой-то интерфейс для получения/изменения данных и ты им пользуешься.
В базу-то писать кто будет, пушкин? А в чистом функциональном языке функции записи в базу быть не может, потому что это функция с сайд-эффектами.

Ivan8209

> "синтаксис" в лиспе - это только открывающая и закрывающая скобочки
С этой точки зрения, у русского языка синтаксиса тоже нет,
потому что это всего лишь около десятка знаков препинания.
> строго говоря, синтаксиса в лиспе нет, равно как и кода.
Ты циклы как пишешь?
> Программа на лиспе - это данные, точно такие же, как xml.

Defined as: (DEFSETF FIRST . #<compiled-function 083b8740>)

---
...Я работаю антинаучным аферистом...

Ivan8209

> А в чистом функциональном языке функции записи в базу быть не может,
> потому что это функция с сайд-эффектами.
Чудо, нет никаких сторонних эффектов, функция отображает пару
"база данных --- запрос" в пару "база данных --- ответ".
---
"Расширь своё сознание!"

yroslavasako

Чудо, нет никаких сторонних эффектов, функция отображает пару
"база данных --- запрос" в пару "база данных --- ответ".
ага, и эту пару нужно каждый раз передавать во вложенные функции, если им тоже нужна база. Тебе не кажется, что так писать было бы крайне неудобно?

margadon

о, ты нарисовался и в стане борцов с ФЯ
ну это прям хождение по мукам :)

alfadred

ага, и эту пару нужно каждый раз передавать во вложенные функции, если им тоже нужна база. Тебе не кажется, что так писать было бы крайне неудобно?
Для этого и придуманы монады, стрелки и прочие подобные вещи. Чтобы было удобнее писать.

Ivan8209

> ага, и эту пару нужно каждый раз передавать во вложенные
> функции, если им тоже нужна база.
А в чём, собственно, проблема?
> Тебе не кажется, что так писать было бы крайне неудобно?
Нисколько.
---
"Narrowness of experience leads to narrowness of imagination."

ramsit



С этой точки зрения, у русского языка синтаксиса тоже нет,
потому что это всего лишь около десятка знаков препинания.
между прочим, об этом даже в OnLisp было написано, и еще где-то.
Как бы xml- и lisp-представления данных полностью идентичны.
Напиши любой пример кода на xml, и я переведу ее на lisp.

Serab

Да он вообще сейчас по dev'у конкретно загулял :grin:

Ivan8209

>> С этой точки зрения, у русского языка синтаксиса тоже нет,
>> потому что это всего лишь около десятка знаков препинания.
> между прочим, об этом даже в OnLisp было написано, и еще где-то.
Между прочим, это не придаёт утверждению вескости, так как
писатель "On Lisp" не является специалистом в языках.
> Как бы xml- и lisp-представления данных полностью идентичны.
> Напиши любой пример кода на xml, и я переведу ее на lisp.
То есть, у XML тоже нет синтаксиса?
Если ты узнал, что такое SXML, этим совсем не обязательно хвалиться.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

kruzer25

нет никаких сторонних эффектов, функция отображает пару
"база данных --- запрос" в пару "база данных --- ответ".
Может быть, ты прочитаешь мой пост?

функции записи в базу быть не может

kruzer25

ага, и эту пару нужно каждый раз передавать во вложенные функции, если им тоже нужна база. Тебе не кажется, что так писать было бы крайне неудобно?
Дело не в этом, а в том, что "традиционные" БД немного не предназначены для схемы работы "вот сейчас мы всю эту БД засунем в приложение на входе, а на выходе получим новую версию БД и всё это положим обратно на винчестер".
Что делать, если, например, пока мы обрабатываем один запрос, придёт какой-то другой? Подождать, пока не завершится обработка первого? Как-то уныло выходит.

Ivan8209

>> нет никаких сторонних эффектов, функция отображает пару
>> "база данных --- запрос" в пару "база данных --- ответ".
> Может быть, ты прочитаешь мой пост?
>>> функции записи в базу быть не может
Ты никогда не читаешь, что тебе пишут?
В базу никто не пишет, база возвращается как результат функции.
---
"Narrowness of experience leads to narrowness of imagination."

kruzer25

Ты никогда не читаешь, что тебе пишут?
А ты читаешь, что тебе пишут?
p> функции записи в базу быть не может
Ещё раз, с чем именно ты не согласен в том утверждении?
---
"Три раза, Ганс, три раза. Запомни, Ганс: три раза."

Ivan8209

>> Ты никогда не читаешь, что тебе пишут?
> А ты читаешь, что тебе пишут?
p> функции записи в базу быть не может
Да, и я тебе ответил, могу ещё раз повторить: в базу никто НЕ ПИШЕТ.
Если ты ещё не понял, как это делается, поясняю: она --- ПЕРЕСОЗДАЁТСЯ.
И возвращается как результат пересоздания.
---
"Narrowness of experience leads to narrowness of imagination."

kruzer25

> Да, и я тебе ответил, могу ещё раз повторить: в базу никто НЕ ПИШЕТ.
Теперь тебе нужны целых четыре раза? Без проблем:
p> функции записи в базу быть не может
Ты всё ещё несогласен с этим утверждением?
Если ты ещё не понял, как это делается, поясняю: она --- ПЕРЕСОЗДАЁТСЯ.
И возвращается как результат пересоздания.
И про это я тоже тут писал, правда, ответом не на твой пост.

Ivan8209

p> функции записи в базу быть не может
> Ты всё ещё несогласен с этим утверждением?
Да, несогласен. И я тебе уже объяснил, как это делается:
база --- ПЕРЕСОЗДАЁТСЯ и возвращается как результат.
Чудо, иди, прочитай что-нибудь про то, как это делается.
---
"МЕТАН --- ТОПЛИВО XXI ВЕКА"

kruzer25

И я тебе уже объяснил, как это делается:
база --- ПЕРЕСОЗДАЁТСЯ и возвращается как результат.
Где тут, по-твоему, запись в базу?
Кстати, кто тебя научил не отвечать на пм?

Ivan8209

>> И я тебе уже объяснил, как это делается:
>> база --- ПЕРЕСОЗДАЁТСЯ и возвращается как результат.
> Где тут, по-твоему, запись в базу?
Она зарыта на уровне реализации языка, в самом языке её нет.
---
"Narrowness of experience leads to narrowness of imagination."

kruzer25

Она зарыта на уровне реализации языка, в самом языке её нет.
И не может быть - об этом я и говорю.

Serab

Вот, уже цитировал вроде здесь мою любимую статью:
http://www.joelonsoftware.com/articles/GuerrillaInterviewing...
15 years of experience interviewing programmers has convinced me that the best programmers all have an easy aptitude for dealing with multiple levels of abstraction simultaneously.
Вот ты в данном споре и не дотягиваешь, два уровня «языка» у тебя уже не укладываются в голове почему-то.

kruzer25

О каких именно уровнях ты говоришь?
Попробуй, что ли, перечитать мои последние посты в этом треде (не только ответы КОНТРЕ).

Ivan8209

> О каких именно уровнях ты говоришь?
Об этих самых.
Всем понятно, для чего существуют все эти типы с уникальностью объектов
и как оно сделано на реальных машинах.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

margadon

ну это как вот пишешь ты, пишешь - а на самом деле в мусорном уровне слое этому самое место :D

Serab

пацталом

kruzer25

все эти типы с уникальностью объектов
Чего-чего?
Я уже совсем не могу уловить твою мысль, какое это отношение имеет к работе с базой?

Ivan8209

>> все эти типы с уникальностью объектов
> Чего-чего?
Они самые, которые из линейной логики.
> Я уже совсем не могу уловить твою мысль,
> какое это отношение имеет к работе с базой?
Прямое и непосредственное.
---
"Narrowness of experience leads to narrowness of imagination."

Gaishnik

под него нет библиотек

Теоретически, если использовать clojure, то можно юзать джавовские библиотеки.

karkar

Только это уже совсем другой лисп (не совместимый ни с CL, ни со схемой, как я понял).

karkar

> разве в нем нет побочных эффектов?
Не надо путать "чисто функциональный" и "функциональный".
Функциональные языки - это те, в которых функция является первоклассным значением (может быть передана как значение в функцию, возвращена из нее, помещена в структуру данных и т.п.). К сайд эффектам это отношение не имеет.
Чисто функциональные - оперирующие функциями в математическом смысле - которые не имеют сайд-эффектов и выдают детерминированный результат, зависящий только от аргументов и окружения.

karkar

>строго говоря, синтаксиса в лиспе нет
Никогда не мог понять этого утверждения.
Почему в (list 1 2 3) нет синтаксиса, а в [1; 2; 3] есть?
Почему в (lambda (arg) (+ arg 1 нет синтаксиса, а в fun arg -> arg+1 есть?
Если я забуду скобки вокруг первого arg, не будет ли это синтаксической ошибкой?
Если в выражении перепутаю скобку и напишу (* 2 (+ 3 4 не будет ли это синтаксической ошибкой?
Имхо, в лиспе синтаксис есть, просто очень плохой.

yroslavasako

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

Ivan8209

>> Функциональные языки - это те, в которых функция является первоклассным значением
> си тогда тоже подходит.
В сях появились анонимные функции?
Их можно создавать на лету?
---
...Я работаю антинаучным аферистом...

yroslavasako

В сях появились анонимные функции?
Их можно создавать на лету?
я отвечал на пост
Функциональные языки - это те, в которых функция является первоклассным значением (может быть передана как значение в функцию, возвращена из нее, помещена в структуру данных и т.п.)
указатель на функции всему этому удовлетворяет. Требования наличия анонимных функций там не было.

Ivan8209

>> под него нет библиотек
> Теоретически, если использовать clojure, то можно юзать джавовские библиотеки.
Чисто практически, под питон нет тех библиотек, которые мне нужны,
а те, что есть, используют... Common Lisp. Те же вещи, которые не
требуют Common Lisp, я могу делать и на других языках, питон для
этого не нужен.
---
...Я работаю антинаучным аферистом...

Ivan8209

>> В сях появились анонимные функции?
>> Их можно создавать на лету?
>>>> Функциональные языки - это те, в которых функция является первоклассным значением (может быть передана как
>>>> значение в функцию, возвращена из нее, помещена в структуру данных и т.п.)
> указатель на функции всему этому удовлетворяет.
Нет.
> Требования наличия анонимных функций там не было.
Ещё раз читаем: "в которых функция является первоклассным значением."
Это означает создание функций (в том числе анонимных) в _любом_
месте программы, а не только в глобальном контексте.
---
...Я работаю антинаучным аферистом...

yroslavasako

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

Ivan8209

> переменные в паскале создаются только в заголовках.
> Что теперь они перестали быть первоклассными значениями?
Да, они никогда и не были.
---
"Расширь своё сознание!"

yroslavasako

first-class value - is an entity which can be passed as a parameter, returned from a subroutine, or assigned into a variable.
Всему этому указатели на функции удовлетворяют. Или ты полагаешь, что соответствующая статья в вики - это фейк?

Ivan8209

> first-class value - is an entity which can be passed as a parameter,
> returned from a subroutine, or assigned into a variable.
> Всему этому указатели на функции удовлетворяют.
Указатель ещё не функция, а разговор идёт про функции.
> Или ты полагаешь, что соответствующая статья в вики - это фейк?
Статья в вики --- это ерунда, очень часто написанная студентом,
плохо разбирающемся в предмете. Как пример --- Vilfred_Sagen,
наш знакомый величайший знаток теории государства и права.
---
...Я работаю антинаучным аферистом...

asvsergey

>В сях появились анонимные функции?
>Их можно создавать на лету?
Эти не подходят:
 boost lambda ?
Эсли под сями имеются в виду c++ конечно.

yroslavasako

это уже c++. Про него и разговор не ведётся.

asvsergey

Понял, после того, как написал :)

yroslavasako

Указатель ещё не функция, а разговор идёт про функции.
указатель - это название, а сущность у него требуемая - передача функции, объекта, который может принимать параметры, и возвращать вычисленное значение. Указатель - это скорее термин, описывающий технологию, чем её суть. Вот в паскале значения могут передаваться по var, а в с - только через указатель. Но это же не значит, что в с не бывает никаких переменных. Так что твоя отмазка "не функция, а указатель" кажется мне надуманной.

Ivan8209

>> Указатель ещё не функция, а разговор идёт про функции.
> указатель - это название, а сущность у него требуемая -
> передача функции, объекта, который может принимать параметры,
> и возвращать вычисленное значение. Указатель - это скорее
> термин, описывающий технологию, чем её суть.
Указатель --- не название, а сущность. С указателем на функцию
нельзя работать иначе, чем как с присваиваемым типом, и одно
только это выводит функции во второй класс. Под первым классом
понимают не то, что функции можно присваивать, а то, что с
функциями можно работать так, как это были бы другие значения,
например, числа. Пример:

> (defun test (a b) (lambda (x) (funcall a (funcall b x 2

TEST
> (test '1+ '*)

#<bytecompiled-closure #<bytecompiled-function 08dd9bb8>>
> (funcall * 3)

7
> (funcall (test (lambda (l) (sort l '< 'list) 1)

(1 2)
> (funcall (test (lambda (l) (sort l '< 'list) 5)

(2 5)

> Вот в паскале значения могут передаваться по var,
> а в с - только через указатель. Но это же не значит,
> что в с не бывает никаких переменных.
Да, в си нет передачи параметров по ссылке, и ты хоть тресни,
она не появится, всё, что ты можешь сделать, это передавать
указатели руками.
> Так что твоя отмазка "не функция, а указатель" кажется мне надуманной.
Ты просто ни разу не работал с функциями, как объектами первого класса,
И с переменными --- тоже.
---
"Narrowness of experience leads to narrowness of imagination."

yroslavasako

Я привёл своё определение first-class value (из вики ты его отверг. Приведи тогда своё определение (другой ссылкой). Учитывай, что все предыдущие мои посты относились к другому определению, с которым в этом треде не согласен только ты.
А пока я примерно понял, что ты хотел сказать, и буду продолжать спорить об определениях.
Вот твоё определение, возникшее, видимо, от глубокого знакомства с ФЯ:
что функции можно присваивать, а то, что с
функциями можно работать так, как это были бы другие значения,
например, числа
Хорошо, я могу числа складывать и умножать. x=5;y=6;z=x+y. сделай мне, пожалуйста, тоже самое с функциями (Int->Int->Int) и (Int->(Int->Int сложи их. И назови язык, в котором у тебя это получилось, он и будет тем самым загадочным тру-функциональным языком.
Приводить примеры на скобочках - это дурной тон, они плохочитаемы. Но я понял примерно, что ты имел в виду. Что для функций должен существовать оператор печати. Это бред. В c вообще ни для одного типа данных нет функции печати, она подключается дополнительной библиотекой и не относится к ядру языка.
Да, в си нет передачи параметров по ссылке, и ты хоть тресни,
она не появится, всё, что ты можешь сделать, это передавать
указатели руками.
вот именно поэтому я утверждаю, что необходимость передавать функции через указатели (всего лишь способ записи) не отменяет сущность того, что через указатель передаётся, иначе весь язык с - абсурд, где бывают только указатели.
Ты просто ни разу не работал с функциями, как объектами первого класса,
И с переменными --- тоже.
ага, они мне только снились

apl13

сделай мне, пожалуйста, тоже самое с функциями (Int->Int->Int) и (Int->(Int->Int сложи их.
Не передергивай. Каждому типу своя операция. В сях ты можешь сложить два числа и передать результат в функцию, ждущую число в качестве параметра; можешь сконкатенировать две строки и передать функции, ждущей строку. Передать композицию двух функций функции, ждущей указатель на функцию, ты не можешь. Поэтому си не функциональный язык.

apl13

Почему в (list 1 2 3) нет синтаксиса, а в [1; 2; 3] есть?
Почему в (lambda (arg) (+ arg 1 нет синтаксиса, а в fun arg -> arg+1 есть?
Кстати, неправильно возражаешь. В обеих строках в левой колонке написано одно и то же, а в правой - разные вещи.

yroslavasako

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

Serab

ничто не мешает создать более сложную конструкцию, инкапсулирющую требуемую логику
ну да, никто же не говорит, что невозможно написать компилятор ФЯ на C.

Ivan8209

> Хорошо, я могу числа складывать и умножать. x=5;y=6;z=x+y.
> сделай мне, пожалуйста, тоже самое с функциями (Int->Int->Int)
> и (Int->(Int->Int сложи их.

(1) -> )compile fcf
(1) -> f(n:Integer): (Integer->Integer) == (p +-> p+n)
Function declaration f : Integer -> (Integer -> Integer) has been
added to workspace.
Type: Void
(2) -> f + f
Compiling function f with type Integer -> (Integer -> Integer)

(2) theMap(TEST;+;3M;1!1,827)
Type: (Integer -> (Integer -> Integer
(3) -> f+f45)

(3) 18
Type: PositiveInteger
(4) -> )sys cat fcf.spad
)abbrev package TEST Test
Test(D : AbelianGroup): with
"+" : (D->(D->D D->(D->D -> (D->(D->D
== add
(f: D->(D->D + (g: D->(D->D ==
(x +-> (y +-> f(xy + g(xy

> И назови язык, в котором у тебя это получилось,
> он и будет тем самым загадочным тру-функциональным языком.
SPAD.
---
"Narrowness of experience leads to narrowness of imagination."

Ivan8209

Да,

(4) -> Integer -> Integer -> Integer

(4) (Integer -> (Integer -> Integer
Type: Domain
(5) -> Integer -> (Integer -> Integer)

(5) (Integer -> (Integer -> Integer
Type: Domain

---
"...Мелочи меня не интересуют."

karkar

Я мог выразиться недостаточно подробно. Если угодно, очередная цитата из википедии:
In computer science, a programming language is said to support first-class functions (or function literals) if it treats functions as first-class objects. Specifically, this means that the language supports constructing new functions during the execution of a program, storing them in data structures, passing them as arguments to other functions, and returning them as the values of other functions.
http://en.wikipedia.org/wiki/First-class_function
Наверно, мое определение стоит сформулировать как "функциональный язык - поддерживающий первоклассные функции".
В Си можно в некоторых пределах оперировать функциями как значениями, но только константами. Если бы можно было создавать новые значения, то можно было и функциональным его назвать.

Dmitriy82

С твоей позицией в целом я согласен, а вот пример нелепый. Тот факт, что в какой-то узкоспециализированной системе символом + определена (далеко не общепринятым образом) некоторая операция над функциями, не означает, что ты можешь их сложить две функции.
Я бы сказал, ключевыми операциями над функциями, наличие которых выводит функции в статус полноценных сущностей, являются следующие:
композиция, специализация (можно рассматривать как порождение замыканий конструирование базовых функций (например, в си нет функции +, её можно только промоделировать, самостоятельно написав функцию add).

Ivan8209

> С твоей позицией в целом я согласен, а вот пример нелепый.
Не нравится --- не ешь.
Лично мне нравится, когда из матрицы создаётся генератор
функционалов, причём система сама определяет, поверх какого
поля оно работает.
> Тот факт, что в какой-то узкоспециализированной системе
> символом + определена (далеко не общепринятым образом)
> некоторая операция над функциями, не означает, что ты можешь
> их сложить две функции.
На практике используются евклидовы пространства, в которых
векторами выступают функции, соответственно, эти функции
можно складывать и даже --- о ужас-
"Курс истинно физической химии"

alfadred

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

asvsergey

>На практике используются евклидовы пространства, в которых
>векторами выступают функции, соответственно, эти функции
>можно складывать и даже --- о ужас!--- перемножать.
>Это должен знать любой химик, доучившийся до четвёртого курса,
>а продвинутому химику это известно со второго курса.
Что понимаентся у химиков под перемножением векторов в евклидовом пространстве?

Ivan8209

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

Dmitriy82

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

Ivan8209

> Я не сомневаюсь, что это может быть удобно.
> Просто сложение функций как элементов линейного пространства
> слабо связано с вопросом о first-class-ности функций.
Как иначе ты собираешься складывать функции, если их невозможно складывать?
Симулировать внутренний интерпретатор?
---
"Those who don't know Lisp are condemned to reinvent it, poorly."

Dmitriy82

> Как иначе ты собираешься складывать функции, если их невозможно складывать?
Почему я вообще должен их складывать? Как уже писали, от функций как от типа данных требуется поддержка других операций, типа композиции.
Если ты спрашиваешь, какие ещё бывают способы определить сложение функций естественно, вот например такой. Сложение типов - это копроизведение, дизъюнктивное объединение (data A+B = Left A | Right B). Оно распространяется на функции следующим образом:
+ :: (A->B)->(C->D) -> A+C)->(B+D
(f+g) (Left a) = Left (f a)
(f+g) (Right c) = Right (g c)

> Симулировать внутренний интерпретатор?
Не понял.

Ivan8209

>> Как иначе ты собираешься складывать функции, если их невозможно складывать?
> Почему я вообще должен их складывать? Как уже писали,
> от функций как от типа данных требуется поддержка других
> операций, типа композиции.
Совсем не обязательно.
Тебе ничто не мешает связать аргументы и тем самым назвать их,
тогда ты будешь работать уже с именоваными функциями.
>> Симулировать внутренний интерпретатор?
> Не понял.
Если функции невозможно создавать на лету, как их складывать?
---
"Прогресс науки обратно пропорционален числу выходящих журналов."

apl13

Математики, разумеется, про это могут не знать.
Блин, в девелопменте даже такой толстый проходит. Шоке!

forenius


 
сейчас я пишу программы для управления оборудованием Juniper
Для M, J, E серий, фаерволов (у ISG вроде итак неплохое управление по Http, хотя конечно если речь идет не о EMS, а о полноценной OAM системе)?
Можно, что-нибудь заценить ?

Sharp

Для MX-ов, M-ов и EX-ов.
Может у них тоже хорошее управление по http (не разу не смотрел, всегда было проще зайти по ssh но собирать с них информацию все-таки проще через JUNOScript.
Пока никакой жуткой логики в этих программах нет (точнее она есть, но уже в SQL и других Perl скриптах но выглядят они примерно так:

my %deviceinfo = (
access => 'ssh',
login => $login,
password => $password,
hostname => $hostname,
'ssh-compress' => 0
);

my $jnx = new JUNOS::Device(%deviceinfo);

my $res = $jnx->get_firewall_information;

foreach my $cnts ($res->getElementsByTagName('counter' {
my $name = $cnts->getElementsByTagName('counter-name')->item(0)->toString;
my $vol = $cnts->getElementsByTagName('byte-count')->item(0)->toString;
$name =~ s/<\/?counter-name>//g;
$vol =~ s/<\/?byte-count>//g;
print "$name $vol\n";
};

Единственное что EX-ы появились не так давно, и отличаются по своему устройству. Поэтому некоторые команды там называются по другому, и периодически дописываю JUNOScript для поддержки этих устройств и команд. Благо он написан хорошо, и это делается довольно просто.

forenius

Инфу собирать, как впрочем и конфигурять по SNMP можно, это не интересно.
Интересно наконец иметь нормальную OAM систему, в которой топология всей сети + любой сервис можно настроить за пару кликов, чтобы посадить обезьяну, дать ей инструкцию и она бы делала всякую однообразную работу, при этом не платя ей на уровне JNCIS.

Sharp

Ну, во-первых, не всю: я не знаю ни одного нормального способа собрать таблицу mac-адресов по SNMP.
Во-вторых, я считаю ssh надежней авторизации по community ;)
Иметь систему хочется, и идея в конце-концов превратить набор программ в какое-то единое целое.
Хотя, если найдешь такую систему раньше, чем я напишу что-то более-менее вменяемое, дай знать ;)
p.s.
когда был дикий завал рутинной работы как дать базовые настройки, настроить однотипно интерфейс, я создал себе несколько скриптов (изначально на Sed-е, потом на Perl-е которые принимали один-два параметра и делали готовый файл, который оставалось залить на устройство.

forenius

А не нужно искать, нужно ставить на сеть оборудование вендора, у которого это есть.
Кстати, вот все говорят SLA, SLA, а у кого-нибудь реально стоит система, которая бы отслеживала соблюдение этого самого SLA ?
PS Система и скрипты, разные вещи - между ними пропасть работы.

Sharp

Ну давай уж разбавим этот флейм про языки, флеймом про сети :cool:
А много ты знаешь таких вендоров, у которых уже есть такие системы и которыми пользуются крупные пользователи?
У нас, например, в перемешку много всего: и Cisco, и Juniper, и много другого. Выбирались по разным параметрам, основной конечно деньги, плюс по началу хватало Cis-ок в качестве роутеров, потом перестало. Долгое время у Juniper-а не было коммутаторов, теперь есть, правда до сих пор не идеальны.
К тому же, не всегда Вендор способен дать подходящее тебе решение. Насколько я знаю, ReTN построен на Juniper-ах в основном, но мониторится через Cacti. Comstar строится на Cisc-ах, но мониторится тоже не вендорным решением.
Про SLA я знаю только одну систему, которая это обещает: http://www.whatsupgold.com/products/index.aspx , демка у них на сайте выглядит интересно, но на практике так и не стали пробовать.
p.s.
что от скриптов до системы много работы я в курсе, но пока нет полного понимания, чего хочу от системы, а время и желание писать скрипты пока еще есть. Вот когда придет окончательное понимание или пропадет желание писать, тогда буду искать систему под свои требования.

forenius

Знаю больше 3-х.
Сisco - говно, у них маркетинг хороший, и куча негров думает, что бля, я вот сейчас подучу CCNP, потом сдам на СCIE и стану крутым, потому что Cisco это круто.
Когда такие люди видят оборудование, в которой PWE3 настраивается парой кликов в системе и работает, они ох..ют, происходит крушение мировозрения :) .
Сасti - бл..дь вообше не решение, прикручивать для каждого чиха скрипт, это на уровне пионеров из домовых сетей, а не операторов (по-экспериментировать для того, чтобы понять что нужно от системы которую нужно купить еще покатит и все). Операторское решение должно обеспечивать конвеерную работу.
Комстар - вот кстати эти педики заявляли в свое время о том, что они первые в России запустили систему для SLA - у них этого нет вообще. Да и в остальных задачах пи..ц. Гонять городской трафик через УАТС (нортелловские Meridian) имея в распоряжении SoftSwitch операторского класса, это блин круто.
РТКом на OpenNMS делает, сидят волосатики прогают, но блин свалят чуваки, что с этой системой делать, документирование никакое, кто будет это поднимать.

PS вообще понятие мониторинг у многих какое-то ущербное ("О я MRTG прикрутил, оно мне загрузку канала показывает - за..ись").

Sharp

Ежели не секрет, что это за вендоры, особенно больше трех?
Может заодно порекомендуешь оборудование с таким легким управлением? Мне PWE3 не сильно нужен, но звучит несколько заманчиво.

forenius

Tellabs я по задачам для мобильных операторов сужу, питерские Вымпелкомовцы были очень давольны оборудованием.
Huawei - эти вообще в свою систему пытаются все оборудование запихнуть , ALU (SAM их для рутеров).
У Циски просто нет нормально графической системы управления.

Marinavo_0507

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

Sharp

Так ты телефонист, тогда все понятно — я работаю в телекоме.
Сколько ни сталкивался с телефонистами, очень сложно понимать друг друга: видимо разные задачи решаем и выбираем разные подходы.
И с железом как-то так получается: есть фирма Nortel, которая делает вроде бы хорошее оборудование для телефонии, многие довольны. Но вот под наши цели оказалось хоть и надежное, но абсолютно неудобное, без необходимого нам функционала и с кучей своего, ни с кем несовместимого. В результате, не знаем куда сейчас деть.
Huawei в телекоме — это вообще отдельная история. Один раз дали на тест ихний роутер, и с ним возникла проблема — периодически рвет BGP сессию. Начали разбираться, выяснилось — он в каждом третьем TCP заголовке обнуляет некоторый конкретный бит. Зачем он это делает, никто не смог объяснить. А как телефонная железка — просто прелесть, работает как часы.

apl13

Я ничего не пропустил, здесь все еще обсуждают языки под *nix? :o

apl13

Почему я вообще должен их складывать? Как уже писали, от функций как от типа данных требуется поддержка других операций, типа композиции.
Ну вообще, на множестве отображений из множества в полугруппу автоматически индицируется структура полугруппы...

Ivan8209

О, появился первый математик, всё ещё помнящий, зачем оно нужно.
Странно, что никто не обратил на то, что объединять отображения
так, как это показано выше, имеет смысл только для непересекающихся
областей определения, иначе как-то нехорошо с коммутативностью
становится. Полугруппы, как-то, не очень интересны.
---
"Математика --- лучший способ водить самого себя за нос."

apl13

Коммутативность - не главное в этой жизни. :)
ЗЫ. Я механик. :o

Sharp

Языки программирования обсуждали где-то на первой странице (может даже только в самом первом посте).
Далее все делятся своей мудростью и жизненным опытом :cool:

Ivan8209

> ЗЫ. Я механик.
Это хорошо. В дифференциалах, значит, разбираешься.
---
"Утверждаю, что с научной точки зрения, главное в профессии вора,
как и в профессии святого, конечно, это вовремя скрыться."

sergey_m

Инфу собирать, как впрочем и конфигурять по SNMP можно, это не интересно.
Интересно наконец иметь нормальную OAM систему, в которой топология всей сети + любой сервис можно настроить за пару кликов, чтобы посадить обезьяну, дать ей инструкцию и она бы делала всякую однообразную работу, при этом не платя ей на уровне JNCIS.
Уже лет 20 как это интересно, но к счастью квалифицированных специалистов, данная хуйня всё никак не наступит, а значит они будут получать свою зарплату.

sergey_m

Далее все делятся своей мудростью и жизненным опытом :cool:
Вот как теперь зовётся замер писями.

Marinavo_0507

Уже лет 20 как это интересно, но к счастью квалифицированных специалистов, данная хуйня всё никак не наступит, а значит они будут получать свою зарплату.
Я думаю, что действительно, манагеры сразу соображают насчёт следующего шага. Пусть подрядчики хоть обезьянами, хоть пионерами на коленках работу делают, это уже их проблемы. Я вот как раз в таком наколеночном подрядчике работаю пионером :p

Sharp

Интересно наконец иметь нормальную OAM систему, в которой топология всей сети + любой сервис можно настроить за пару кликов, чтобы посадить обезьяну, дать ей инструкцию и она бы делала всякую однообразную работу, при этом не платя ей на уровне JNCIS.
Уже лет 20 как это интересно, но к счастью квалифицированных специалистов, данная хуйня всё никак не наступит, а значит они будут получать свою зарплату.
Считаю себя квалифицированным специалистом, и очень хочу получить подобную систему. Видимо потому, что уверен, что мне платят не столько за умение работать с конкретной железкой, сколько за понимание технологий, за способность придумывать что-то новое, за творческий подход к решению проблем и за ответственное отношение к делу.
При этом по возможности любую однообразную работу пытаюсь автоматизировать, и полученное решение отдать другим людям. Не хочу сказать, что делаю каждый месяц какой-то прорыв или нововведение, но подобный опыт есть. Еще ни разу ни у кого не возникало желание оспорить целесообразность получения мною зарплаты. (Или просто мне этого никто не озвучивал)

sergey_m

Тебя конечно никто и не уволит с появлением такой системы, но в других местах бывают топы, которые всё ждут когда-же появится нормальное РЕШЕНИЕ, которое позволит уволить этих умников.

Sharp

Ну, всякое бывает.
На предыдущем месте работы в какой-то момент встал вопрос, что я такой умный не нужен. Т.е. я нужен для выполнения однотипных действий, а все моя автоматизация никому не нужна. Благо примерно в тоже время знакомым был нужен работник, поэтому без особого сожаления поменял место работы.
И не так давно ходил на собеседование, там изначально сказали: задача просто автоматизировать один процесс. Хотя это и небыстрое занятие, но когда-то и оно закончится, и мне придумают какое-то другое занятие. Может для меня не такое уже интересное, как изначальное. Как результат — я туда не пошел.
А задачи владельцев/топов тоже понятны: пока человек дешевле железки/программы, надо держать человека. Как только программа/железка станет дешевле человека, надо взять железку. А человек должен или руководить этим, или заняться чем-то другим. Или найти себя в чем-то совсем другом. Я, например, когда железки и программы станут умнее меня, хочу заняться медитацией или серфингом, и ничего плохого в этом не вижу.

forenius

Я не телефонист.
Да мне приходилось и ГАТС конфигурять и трейсы разговоров снимать, и всякие говноУАТСы ставить типа LG, но я не телефонист.
Я конфигурял 7200 циски и M10i, E120 и 5350, PIXы и ISG1000.
Nortel попадался, но не много их L2 свичи (так себе WG c WiFiными точками доступа ( то что у Голды на ГолденWiFi прикольно когда это говно сначала OSPF поднимает, а потом поверх IPSec тонели, видел издалека их софтсвичи CS2000 (в Акадо за 2 млн баксов CS1500i, попроще.

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

Когда эти пидоры не могли обеспечить 50мс сходимость, они вопили на своей говноЦискоЭкспо (это блядь додуматься надо - брать бабло за то, чтобы народ послушал их рекламную ботву нахера вам эти 50 мс, это идет из SDH и впринципе это не нужно в пакетных сетях. Когда у них это заработало (?) началось - TE, FRR, 50 мс, Сisco - это круто.

По поводу всяких заголовков. Я в свое время при тестировании Алкателевского 3G отловил багу между SGSN и BSC - короче, при пуске нефрагментированных пакетов при пинге время от времени возникали потери, не могли понять почему, обнаружили что с определенного момента SGSN (помоему) - обнулял счетчик TCP cессии, а BSC этого не делал. Пофиксили быстро, только на тендер их все равно не позвал (точнее позвали и послали сразу).
PS
Об аутсорсинге, я был в сингапурском операторе - StarHub, там вся транспортная сеть (NGSDH) на аутсорсе у Хуавея оператор доволен (а самом деле даже вся сеть ARPU c абонента - 40 баксов сингапурских 1,5 SD = 1 USD (у российских 10-15 USD). Я спрашивал, как вы решаете проблемы, все просто - отстегивают бабло, из Майлазии приезжает автобус китайцев и оборудование с завода(если глобальный фейл, но таких и не было проблема решается быстро и качественно.
Оставить комментарий
Имя или ник:
Комментарий: