Ну і чому тоді потрібно раптом відмовлятися від усіх технік програмування тільки тому, що програма написана іншою мовою? Від того, що програма написана нормальною мовою, вона не перестає бути програмою.
І що? Наша мова настільки примітивна, що текст програми нею ніяк не написати, чи що? Це твоя ідея? Чи ідея в тому, що програмісти почнуть писати всілякі поеми замість програм і самі не зможуть їх розпарсати?
Це розуміти як «Ні, я не знаю Пролог і те що він використовується для розпізнавання живих мов більше 40-ка років»?
Для дуже тупих пояснюю ще раз — я не збираюся писати інтерпретатор української розмовної мови. Це не Natural Language Processing. Це програмування.
У багатьох мов програмування є конструкції, поведінка яких непередбачувана, але це не заважає писати програми. Якщо ви напишете неоднозначну програму, то це будуть ваші особисті проблеми, коли система зрозуміє її не так, як ви планували.
Ну так ви використовуєте реальну мову чи пишете DSL, яку пропонували писати мені? Вам не здається, що універсальною DSL на всі випадки життя буде якраз звичайна мова?
Ні, я не виконую код у мозку. Я пишу програми з підтримкою самодіагностики.
Ні, я не вважаю інструменти статичного аналізу непотрібними. Вони частенько ловлять помилки програмах. Якщо ви вдумаєтеся, що таке ІСА, то ви зрозумієте — що це, фактично, експертна система по мові програмування і типовим помилкам. А якщо ви почитаєте уважніше те що я пропоную, то побачите, що у мене програма складається з двох компонент — сам текст програми і експертна система до неї.
Гм. І де це я встиг вас так зачепити?
Потягну в інший бік. На whitespace ніхто при здоровому розумі і тверезій пам'яті не пише. Але якщо хтось скаже, що написаний цією мовою код не є програмою, хай перший кине в мене камінь.
Роз'яснюю. Код повинен бути перш за все читабельним та підтримуваним.
Я слабо уявляю code convention, в який можна вгнати ваш підхід, але якщо такий і буде, заставити програмістів його дотримуватись можна лише нагайкою.
Всі наявні мови програмування - від C до Пролога, який ви тут чомусь весь час приплітаєте
Я вам навів приклади великих систем, які написані динамічними мовами і які використовуються лідерами індустрії, пане поліглот. Як ви до цього ставитеся — це ваші особисті проблеми.
Мене дуже зачепила ваша зашореність, на пару з ВМ.
Куди вже читабельнішим може бути код, який записаний звичайною мовою?
Ваші сексуальні фантазії про нагайку мене не турбують.
Ознайомтеся нарешті з Прологом. Подальша дискусія немає сенсу. Ви просто не знаєте елементарних речей.
1. Неможливість виробити єдиний code convention.2. Відсутність синтаксичних механізмів, що форсуватимуть дотримання певного стилю.3. Як наслідок п.1 і п.2 - нечитабельність.4. Як наслідок п.3 - неможливість реалізації довготривалої підтримки.5. Як наслідок п.4 - неможливість використання мови для будь яких цілей, окрім навчально-розважальних.
"Tim Toady" або TMTOWTDI або "There Is More Than One Way To Do It" або "Why Perl sucks"
Чому Python вбив Perl і чому нео-адміни все роблять на Python і де-коли на Ruby? Бо в Python якраз навпаки: мова форсує "pythonic way" та робити тільки в одному виробленому стилі, одними накатаними патернами та одним вишліфуваним дизайном і не вий*****тись, за перепрошення. Тобто, новий адмін сідає за код і йому не треба пити пляшку горівки щоби зрозуміти що то за холєра написана.
Але найти заміну йому частенько складно.
Схоже що я таки олдскул-адмін. Я зараз пишу на пітоні лише з метою його вивчення. А так - Perl або Shell.
І нічого, раніше не міг прочитати власний код вже через місяць. Тепер без проблем читаю та підпилюю те, що писав позаминулого року — виробив нормальний code style та дав привчити себе до code conventions. Ну й мій код людина доробляла без проблем.
UNIX та подібні я полюбляю саме за TIMTOWDI.
На Python він теж присутній. От тільки вимоги до форматування змушують писати більш-менш адекватно.
Справа в тому, що натуральна мова дає контекст, який зрозумілий живій людині, але не зрозумілий компютеру. Тому треба будувати ті всі дерева, знаходити контекст і так далі. Тому я й казав що це — титанічна робота. Казав тому, що мабуть я вже не настільки молодий щоби все знати.
Так, бо Python молодий, а Perl дуже старий, на той час це було найкраще що можна було знайти для адмінів, і на ньому дофіга вже всього є. Але це всеодно не значить що Perl, як мова, читабельний та любимий всіма.
Але це таки не жарт і серйозно: зараз нових адмінів вже дуже часто питають чи знає Python або Ruby і наскільки. Зазвичай, пишуть "Perl is a plus", але якщо нє, ну то й нафіг. В Україні ситуація може й інша зараз, але це всеодно зміниться, бо дивись як Python погнав у гору, а де той Parrot? Щось ніфіга про нього не чути.
Так, але там об'єктів нема. Тобто типу є, але насправді то туфта якась, яку руцями треба контролювати і малі помилки можуть призвести до непередбачуваних результатів.
Ще-й немає try/catch. Тобто є хак Error.pm який так і не працює як треба у певних випадках. Або $@% проблема, яку ненавидять самі перлісти: якщо я сказав @array, то якого біса я звертаюсь до нього вже як $array[0] і чому не можу @array[0]? В Perl6 вони це вже начеб-то порівняли.
Well, це OT. Але якщо мова за Unix, то я полюбляю зовсім з інших причин: архітектура. Останнім часом сиджу на OpenSolaris дуже багато, і чим далі з ним знайомлюсь у його «бебехах» та internals, тим менше і менше подобається Linux (oops!)... Але flame off, please.
Sort of. Можна писати obfuscated python, але це-ж не така дикість як у Perl! Якщо писати pythonic way та притримуватись вже накатаних шаблонів (design patterns), тоді там не так вже й багато місця для розваг. Я вважаю це якраз дуже добре: і є достатньо місця для міні-приколів, а є здорового глузду рамки, що не дають людям потім матюкатись через синтаксис. Те що там вже є задумано, є файним та досить таким собі солоденьким і оптимальним для всіх...
У Python дуже файний баланс, на мою думку.
Цитата: Володимир Лісівка від 2009-10-11 23:39:19Я вам навів приклади великих систем, які написані динамічними мовами і які використовуються лідерами індустрії, пане поліглот. Як ви до цього ставитеся — це ваші особисті проблеми.Ой, та досить тут тупо грати на публіку: «лідерами індустрії», «в грєчєском залє, в грєчєском залє» © Райкін. Ще зачніть про Windows is used 95% in the World...
При чому тут взагалі якась індустрія? — та-й зовсім розмова не про те. Ми тут говоримо про швидкість та ефективність виконання статичних мов vs динамічних. От і було чітке питання показати велику систему на динамічній мові, що вміє робити 10K і більше транзакцій за секунду. Ви цього не зробили, а все що ви навели — це повільні системи, які навіть третини з того не тягнуть...
Заодно ви так і не згадали про те, що в статичних мовах типу С++ чи Java — при випадковому (дурному) перейменуванні метода воно не скомпілюється. А в динамічній мові це буде runtime помилка, яка може виявитись значно пізніше (про тести городити тут диферамби не треба).
А я навів вам: FOX від Fusion Systems якраз робить гарантованих 10 тисяч транзакцій за секунду (насправді робить більше). Це також величезна модульна і дуже популярна система. Дивно що ви про неї взагалі нічо не чули і рівняєте з нею якісь ЖЖ, ютуб та прочу social networks фігню.
Для початку її вивчити, як я вже казав… Іменник насправді «the print». Складніше, якщо не йде мова про стан: «the news will never get into print» — але тут програмування я не бачу… Також (привітання Tim Toady ще раз!) можна: «be printed». Тобто: "If Peter likes cat, on the standard terminal output should be printed «True», otherwise «False». Так зрозуміліше?
«Go back to back door in the back of the back room and back up your files.» ("Іди назад до задніх дверей в задній частині задньої кімнати і зроби резервну копію своїх файлів." — списав з книжки).«to back» — це дієслово.«the back» в «the back room» — це іменник.А решта?
Ознайомтеся нарешті з темою. Ця "титанічна робота" була зроблена вже не раз. Ось зразок першої такої системи (1968-1970): http://hci.stanford.edu/winograd/shrdlu/
> Виведи мені будь-ласка десять останніх транзакцій$ Шо?> Десять (10) останніх транзакцій виведи! Шо...$ Сто транзакцій по користувачу «Шо» не знайдено.> Не сто, а десять.$ Що десять?> Десять транзакцій.$ *виводить 10 несортованих транзакцій*> Б***!! Дурак! Не так!!!$ Лист «Б***!! Не так, дурак!» по електронній пошті на адресу director@company.com надіслано.> Ой!! Відмінити!$ Десять останніх транзакцій користувачів відмінено без резервної архівації. Сам ти Ой.> Ребут$ Шо?> Рестарт$ Шо?> Перезавантажити$ Запит на перезавантаження вантажівки з пивом фірми «Оболонь» відправлено.> Відмінити!$ Що саме?> Запит на перезавантаження вантажівки.$ Запит на відміну перезавантаження вантажівки з пивом фірми «Оболонь» відправлено. Буде прийнятий одразу після закінчення попереднього запиту.> Чорт...$ Чорта не знайдено. Але знайдений троян Chort@w00t_XXX-666. (Так/Ні): _> Ні!$ OK, троян Chort@w00t_XXX-666 не стерто, а виконано.> Виведи 10 останніх транзакцій.$ Ви маєте наувазі 10 останніх транзакцій?> Так. Виведи їх будь-ласка.$ Що значить «так»? Ви маєте наувазі «танк»?> *стріляється*
Ваші продукти залишили Гугл далеко позаду?
Якщо система дає напр. 100 транзакцій на одного користувача, то яка сумарна пропускна здатність для 100-ні користувачів?
7700 на кластері з Ораклів, 6000 на одній машині транзакцій в ХВИЛИНУ (120-100 TPS)
Взагалі-то Perl створювався саме як мова для адміністраторів.
Дивно, мене питали як я знаю:1. ANSI C2. POSIX Shell3. Perl
Може це вас здивує, але я почав розуміти ООП саме коли почав створювати модулі на Perl. До того мене намагались навчити цьому на прикладі PHP та C++ — не вийшло.
class Foo:pass
Ну а мене у Python дико нервує відсутність $/@/% перед змінними/масивами/хешами.
Наразі мені платять за RHEL (тому я й сертифікувався на RHCT).
Тобто, ви хочете сказати, що Perl змушує усіх писати нечитабельний код? А як вам постійна лайка на виділення блоків коду у Python відступами?
Різні мови з різним походженням та метою.
Цитата: Володимир Лісівка від 2009-10-14 12:12:13«Go back to back door in the back of the back room and back up your files.» ("Іди назад до задніх дверей в задній частині задньої кімнати і зроби резервну копію своїх файлів." — списав з книжки).«to back» — це дієслово.«the back» в «the back room» — це іменник.А решта? Думаю, що розрізняти «watch back room» від «watch my back» — це справа розпізнаного контексту, ніж справа секвенційної токенізації.
Почитав діалог з компом… LOL Уявляю програмування:Де це вже бачив?… А! Згадав… Emacs doctor-mode…
Цитата: Володимир Лісівка від 2009-10-14 12:12:13Якщо система дає напр. 100 транзакцій на одного користувача, то яка сумарна пропускна здатність для 100-ні користувачів?Це залежить. Там-же кластер, а не один сервер?
Here is the throughput we see from a single multithreaded client talking to a single server where the "hot" data set is in memory under artificially heavy load in our performance lab:
Note that this is to a single node cluster so the replication factor is 1. Obviously doubling the replication factor will halve the client req/sec since it is doing 2x the operations. ... by increasing the replication factor, decreasing the cache size, or increasing the data size on the node, we can make the performance arbitrarily slow.
AFAIK для репортів, коли Ларрі працював для NASA... Але менше з тим.
Ну та так, це-ж ще не поголовно, звісно. Просто загальні тенденції дуже сильно зсунулись в сторону Ruby/Python за останній рік (що я, доречі, передбачував ще приблизно три роки тому) і зараз дуже багато чути саме про ці мови та нові проекти саме на них. Проте майже нічого про нові проекти на Perl та зовсім ноль про хоч якийсь прогрес Perl 6. Сам автор Багзіли кляне Perl і каже що більше він тим займатись не в стані та хоче піти шляхом Python або Ruby. Доречі, тут офіціоз: https://wiki.mozilla.org/Bugzilla:Languages
Якщо щось може пропускаю, то вкажіть — буду вдячний...
На прикладі Python було-б теж без жодних проблем, я вважаю:Код: [Вибрати]class Foo:pass:-)Причому, кожен файл з Python кодом автоматично модуль. Геніально і просто!
Думаю, що це не завадить прочитати: http://avatraxiom.livejournal.com/58084.html :-)
Так-так. Поки що воно все ще жиє і ще трохи потріпається... Але мушу попередити, що Oracle дуже скоро йому шайби прикрутить на ентерпрайзах і вже є дуже агресивні та реальні бізнес-плани як саме. RedHat в принципі сам себе закопує... Ну але то таке, не будемо про сумне.
Ні, я хотів сказати що Perl дає забагато свободи. Або, точніше, дає її там, де вона зовсім непотрібна.
Виділення відступів спочатку бісили ESR'а теж. Але насправді це зовсім не проблема і зовсім не нервує, бо є Python-mode у VIM, Emacs, Eclipse, NetBeans, Komodo та ін. Ви-ж не в Notepad.exe то все пишете, пра?
А от коли почитаєте що пише автор Багзіли, то там де він пише про Cons пітона за відсутність curly braces — дуже явно видно що трактує Python як Perl, просто з іншим синтаксисом. А вся фішка в тому, що класичний Pythonic way дає ну максимум метод на екран без скролу. Тобто, чим більше ріжеш на кавальці маленькими методами — тим краще. Хіба тоді проблема побачити ті відступи, коли все перед очима? А от коли рябить дочорта @#$%$#@#$% таким...
Uhm... Як на мене, то вони обидві general purpose. Просто тепер одна розвивається і бустяється Гуглом, а друга — відмирає музейним експонатом. Це-ж нормально. Прийде час і Python буде в музеї...