Поддержка юникода _должна быть_ на уровне языка, раз уж есть встроенная поддержка строк вообще. Иначе это просто протез. Нет, не протез. Костыль к отрезанной ноге.
Тем, что нет возможности четко указать, сколько же будет коннектов к базе данных. Как только сползёте с MySQL'я на "нормальную базу", поймете, зачем вам это нужно.
кому нужен ASP и вобще .NET если он работает намана только в венде. кросплатформенный это чо у них вобще подразумевается? написал на одном компе с виндой значет будет работать на другом с вендой? бугога
в то время как на питоне теперь пишут даже куски игор типо civilization iv и 3д редакторов типо poser 5-6, быдлоasp завойовывает все больше поклонников пхп которым не нравитсо заливать свои скрипты на удаленную машину без красивых иконок а на маки у них денег нет и не будет.
скоро мир окончательно разделят на две части. одни будут знать ls, ps и import os а другие в какой менюшечке поставить какую рющечку
Ну как выясняется и без юникода обходиться можно, хотя я тож не против его реализации в самом языке. А разговоры про синтаксиси вообще неуместны. Это по-пионерски. Питон не смотря на свой чистяк далеко ли ушел от алгола? пытался вроде, но комьюнити добивает все его прогрессивные фишки. Так вот в "быдлосинтаксисе" Руби есть несколько стилей, мне любиый алголоэйфелеподобный и сишный и перловый и я думаю прижелании (примите участие ;) ) можно и питоновский засунуть. а вот засуньте ка в питон аналог .grep и =`
чо вы там вообще делаете с эти юникодом в питоне без таких очевидных давно уже регэксповых фишек?
> чо вы там вообще делаете с эти юникодом в питоне без таких очевидных давно уже регэксповых фишек?
чо вы там имеете введу под регэксповыми фишками? попробуйте например в в юникодной локали в руби сделать s = "лопата";s[1..2] или какое-нибудь s.upcase и поймете о чем я. только не надо меня уверять что всё это решается костылиными внешними библиотеками. юникода в руби нет => руби сосет как пылесос.
Sed-овский синтаксис а-ля "кошка по клавиатуре топталась" хорош для мелких одноразовых скриптов. А тех, кто использует его в серьёзных программах, надо гнать в газенваген ссаными трусами. И если серьёзный язык позволяет разным быдлокодерам писать нечитаемый код в стиле перла и седа, это не достоинство, а ОФИГЕННЫЙ НЕДОСТАТОК.
а под регэксповыми фишками я имею ввиду удобную и быструю работу со строками используя регулярные выражения. на руби это в разы короче и читаемее, чем на питоне. именно поэтому питон не воспринимают перлокодеры.
как вам не покажется странным ,а вам покажется ;), но читаемость кода от седовского синтаксиса увеличивается. понимаю ваш максимализм все причесать простым всеохватывающим набором зарезервированных слов, но все же простое равенство с тильдой занимает на несколько порядков меньше знаков, чем вызовы импорта модуля, метода компиляции регэкспа и собственно самих операций со строкой. а если хотите совсем минимального набора слов и типов откройте для себя форт. :)) кстати без смеха есть отличная разработка калиниградского чувака по работе со строками на фортообразном языке.
Это не часть языка, и даже не часть стандартной библиотеки, а всего лишь недоделанный костылик в стадии pre-alpha. Вся стандартная библиотека руби по-прежнему работает с байтовыми быдлостроками. И все сторонние библиотеки тоже. И Рельсы млять тоже.
> читаемость кода от седовского синтаксиса увеличивается
Это вы девачкам рассказывайте. Штуки типа s/\w*:\/\/(.*)\?(.*)/\1/ читать ТЯЖКО. Будете спорить?
> простое равенство с тильдой занимает на несколько порядков меньше знаков, чем вызовы импорта модуля, метода компиляции регэкспа и собственно самих операций со строкой
Преувеличиваете. Вызов импорта модуля происходит один раз, и его можно не считать. Остальное делается так: re.search('foo.*bar', mystring). По сематнике это ничуть не сложнее mystring =~ /foo.*bar/. А если Вы считаете, что круто сэкономили своё время на печати десятка символов, то освойте слепую печать и не позорьтесь как деточка.
>> Та при чём тут японцы Matz нагло позаимствовал эти соглашиния из >лиспа. Да и вообще много чего от туда позаимствовал...
>Во-во, что-то из лиспа, что-то из смолтока, что-то из перла. И >получился не лисп, не смолток, а быдлонечно. Похожее на лоскутное >одяело.
Малчик ви дураг? Идея в создании новых языков как раз и состоит в том, чтоб привнести в них лучшие идеи и наработки из других языков, это раз. А на счет конкретно Руби вы не правы - язык довольно целостный и гармоничный, вместе с тем мощный.
Во вторых, уверен, что большинство возражений со стороны php-кодеров про состоятельность пыха в сравнении с настоящими языками (да, я не оговорился, ибо пхп - это не язык, это всего-лишь препроцессор, в нем например в принципе не возможна многопоточность.. а попробуйте написать сервер на голом php :)) обусловлена тем, что они просто не знают всех сильных сторон других языков (я говорю о Python, Ruby, хоть бы и Perl(если помните, PHP создавался, как более простой Perl)), потому как не снизошли еще до того, чтоб более-менее обстоятельно в них разобраться, и потому с их точки отсчета то что они умеют на php кажется им реально мощнее того, что можно сделать на последних.
Ну и пожалуй, в третьих, Матц - японец, а японцы - очень круты в компютерной области и технике, по этому я думаю, что уж кто-кто, но японцы смогут создать что надо. Тут даже сомневаться не стоит.
PS. Сам я заядлый Python-овец, так как с него начинал (после Паскаля, Сей, Жавы), пробовал и Ruby - но некоторые аспекты оттолкнули - синтаксис с begin,end, особая многопоточность и проблемы юникода. В Питоне с этим все ОК %)
> Матц - японец, а японцы - очень круты в компютерной области и технике, по этому я думаю, что уж кто-кто, но японцы смогут создать что надо. Тут даже сомневаться не стоит.
"Слон - животное полезное." (с). Того же уровня аргументация. Японци хорошо аниме рисуют. Это да. И hellokity тоже у них неплохо получается.
Матц взял кучу идей тридцатилетней давности и слепил _нечто_.
Удивлю, но "привнести в них лучшие идеи и наработки из других языков" недостаточно. Надо ещё _суметь_ это сделать. Пока что видим, что Матц плохо справился. Надо было брать наработки не 30 летней давности, а посмотреть, что нового было сделано в тех же лиспе со смолтолком.
> Идея в создании новых языков как раз и состоит в том, чтоб привнести в них лучшие идеи и наработки из других языков, это раз.
Есть тонкая грань между гармоничным сочетанием и уродливым нагромождением. И Мацумото, хренов доктор Франкенштейн, нагромоздил так, что сам не рад. Смолток с седовскими регэкспами - это отжиг. Надо было туда ещё и SQL до кучи прикрутить, фигли.
>Удивлю, но "привнести в них лучшие идеи и наработки из других языков" недостаточно. Надо ещё _суметь_ это сделать
Взять хотябы Руби-блоки (итераторы). Если я не ошибаюсь они из SmallTalk'а. Но они вошли в синтаксис языка очень удачно, и потому используются очень часто. В питоне есть равномощная конструкция генераторов с yield, но используется гораздо реже.
Как минимум, согласовать эти идеи между собой, а не валить всё в кучу, чтоб "пофичАстее было" \m/ В том же С++ комитет удавится скорее, чем новое ключевое слово в язык добавит. Матц же постоянно перекраивает язык вдоль и поперёк. Когда эта каша застынет, можно будет присмотреться.
Пока что против Руби нашелся один аргумент - не поддерживает юникод - значит, все, млять - быдлоязык. Получается Си тоже быдлоязык :).
Можно привести еще какой-нибудь настоящий аргумент и показать в придачу не быдлоязык??? Потому что обсырать что-то в сравнении ни с чем, это легко. Давай, выходи. Ставь рядом с Руби другой язык и говори: в этом языке есть юникод и другие разные хуе-мае. И поэтому в сравнении с ним Руби сакс.
Во всяком случае на мой пост по сравнению Питона и Руби ухватились только за символы ! и ? в имени функции, но почему-то проигнорировали остальные вещи :). Наверное потому что сказать на это нечего...
ЗЫ: да, тут какая-то сцука писала про быдлосинтаксис подчистить. Выйди гандон и скажи, в чем это он быдло... и где он голимый. А пердануть и не обосновать людая вошь может.
>Отучаемся говорить за других. (С) =)
Я же написал "генераторов с yield" я имел в виду те, которые
def gen1(N):
. for i in range(N):
. yield i
(которые больше похоже на то что в Руби)
То что написали Вы это тоже сокращенная форма генератора, так же как и
[foo(i) for i in bar if baz(i) > 0] - список. Это из list comprehansion. И действительно, это использу(ю|ется) очень часто.
PS. Говорю лишь за себя.
Да это один из самых целостных и продуманных языков, какие сейчас вообще используются. Все, сцука японец продумал. И блоки и названия функций, набор классов. Да блин, сколько только в плане метапрограммирования сделано.
"Если бы губы Никанора Ивановича да приставить к носу Ивана Кузьмина, да взять сколько-нибудь развязности, какая у Балтазара Балтазарыча, да, пожалуй, прибавить к этому еще дородности Ивана Павловича -- я бы тогда тотчас же решилась."
>Определение нормальных языков в студию. Это те, где факториал быстро считается? А мне оно надо? Я клал на синтетическиие тесты. Это писькомерки.
Это те, в которых процессор большую часть времени не в загрузке|интерпретации|выгрузке скрипта, а единожды откомилировав, время и память тратися только на выполненние кода. Например JBoss
Ээээ. Ну всеж таки JBoss не язык. Но да, если сравнивать, то ruby+fastcgi, php+fastcgi, java+jboss, python+whatcamacallit. А скорость интерпретации замерять и на основе этого какие-то выводы делать - это даже не смешно.
Вы путаете замыкания и анонимные функции, друк. Замыкание - это функция, определённая внутри другой функции. Анонимная функция (блок в руби, лямбда во многих других языках) - это замыкание без имени. Лямбда-функции уместны (и незаменимы) в чисто функциональных языках, типа хаскеля, но руби не хаскель. Я бы сказал ВАЩЕ НИ РАЗУ НЕ ХАСКЕЛЬ. И они там смотрятся как на корове седло. И только усложняют чтение и без того хитрозавёрнутого кода.
> Лямбда-функции уместны (и незаменимы) в чисто функциональных языках, типа хаскеля, но руби не хаскель.
Полностью согласен с моей темнотой в даном вопросе. Я вправду думал, что это одно и то же. Но неизвестный человек выше указал мне, что в языке Питон есть замыкания и они решают все проблемы. Я попробовал найти данную фичу в языке Питона и не обнаружил.
> Я бы сказал ВАЩЕ НИ РАЗУ НЕ ХАСКЕЛЬ. И они там смотрятся как на корове седло. И только усложняют чтение и без того хитрозавёрнутого кода.
Насчет лямбды в Руби вообще спорить не буду :). Дело в том, что сам никогда не использовал эту конструкцию в нем. Вот блоки да :). Кстати, код кажется хитрозавернутым только поначалу, когда знаешь язык достаточно хорошо, читается он легко и внятно. (попробуйте вывести код на лиспе или смалтолке для общего обозрения, не думаю что незнающий сможет в нем что-то разобрать).
А если все нападки выше на язык Руби шли от сторонников Хаскеля, Лиспа и Смалтолка, то тут собсвтенно говорить нечего. Для меня очевидно что фунциональный язык Хаскел получше чем Руби. Но проблема в том, что я не видел на нем что-то хорошее под Веб, аки аналог рельс.
Гвидо не раз просили сделать полноценные лямбда-функции, на что он справедливо замечал: если функция состоит больше, чем из одной строчки, у неё должно быть имя. Толково выбранное имя функции - прекрасная документация, оно позволяет сразу понять, что эта функция делаят, и сильно облегчает чтение кода.
Замыкание - это функция, определённая в тебе другой функции.
def greeting(hail):
def hello(name): # эта функция и есть замыкание
return '%s, %s!' % (hail, name)
return hello
hello = greeting('Hello')
print hello('world')
На экран выводится "Hello, world!"
Пример, конечно, идиотский, но суть вы уловили.
Мнээээ... Замыкание = анонимная функция + контекст (scope). Всё. Этого должно быть достаточно для понимания. Зачем что-то ещё лишнее придумывать про "функцию внутри функции"?
>> Если на PHP нечто уровня dev-python/matplotlib ?.. >Что есть dev-python, уточняем, google не помогает, а вселенная >несколько шире привычных вам представлений... IDE?
Речь не о dev-python а о matplotlib Гугл должен помочь...
>> PHP подкупает своим синтаксисом! У него очень низкий барьер начала >>программирования.
>Далеко он уедет не зная различий между "==" и "==="? Я уже не говорю >про сложения строк.
Уедет. Сложение строк в PHP записывается более корректно! Хотя бы потому что строки складывать нельзя! Как бы Вам этого не хотелось. Их можно только соединять и разделять. В этом смысле точка кажется более адекватным символом соединения строк.
> Следует разделять те переменные которые приходят через соединение и те, которые находятся в тексте программы!!!
>Можно поинтересоваться, каким годом датируются ваши знания о php? >Пресловутый register_globals уже сколько лет, как отключен по >умолчанию, а скоро вообще исчезнет.
Вы ничего не поняли!!! Читайте еще раз.
>> Или точнее вообще вводить такой термин!
>А подумать, перед тем, как писать? В php переменная создаётся при >обращении. Как транслятору различать, с какой переменной хотят иметь >дело? Запрещать локальные переменные, чьё имя совпадает с одной из >глобальных? Убирать global и вводить var? ;-) А как же все крики >"оптимизаторов"? Локальных переменных, как правило больше... ;-)
Вот именно что подумать перед тем как писать. Переменная в тексте программы это одно. переменная пришедшая через соединение это другое. Просто не надо путать.
> Вы меня простите, но меня раздражает записывать глобальные переменные в функции размер которой меньше чем эта запись...
>Вас не раздражает писать var? ;-) >Вас не раздражает писать функции, которые зависят от тонны глобальных
Нет. Глобальные переменные это нормально везде. Везде есть константы в некоторых приложениях их больше чем в других. ООП никак тут не помогает.
Общий совет. Сначала пойми о чем речь, потом отвечай.