Какие пять вещей ты ненавидишь в своем любимом языке? [закрыто]

Вы можете добиться того, чего хотите, используя пользовательскую функцию :

use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\SqlWalker;
use Doctrine\ORM\Query\Parser;

class DateFunction extends FunctionNode
{
    private $arg;

    public function getSql(SqlWalker $sqlWalker)
    {
        return sprintf('DATE(%s)', $this->arg->dispatch($sqlWalker));
    }

    public function parse(Parser $parser)
    {
        $parser->match(Lexer::T_IDENTIFIER);
        $parser->match(Lexer::T_OPEN_PARENTHESIS);

        $this->arg = $parser->ArithmeticPrimary();

        $parser->match(Lexer::T_CLOSE_PARENTHESIS);
    }
}

Затем зарегистрируйте эту функцию в своем коде:

$em->getConfiguration()->addCustomDatetimeFunction('DATE', 'DateFunction');

И ваш DQL-запрос будет работать!

403
задан 14 revs, 6 users 40% 27 April 2015 в 07:21
поделиться

178 ответов

Схема

  • Отсутствие статического контроля типов
  • Никакая статическая перегрузка функции (из-за вышеупомянутого) ведущий к длинным названиям полевых средств доступа
  • Никакая объединенная объектная система
  • Своего рода медленное
  • Относительно малочисленное сообщество
2
ответ дан Henk 27 April 2015 в 17:21
поделиться

Схема:

  • Отсутствие пользователей, общественных / маленьких общественный
2
ответ дан leppie 27 April 2015 в 17:21
поделиться

Python:

  1. Глобальная Блокировка Интерпретатора - Контакт с этим усложняет параллельную обработку.
  2. функции Лямбд являются немного неуклюжими.
  3. Никакой встроенный тип заказанного словаря.
  4. В зависимости от того, как Python компилируется, он может использовать любой UCS-2 по сравнению с UCS-4 для внутреннего кодирования Unicode, много строковых операторов и итераторов могут иметь неожиданные результаты для многобайтовых символов, которые превышают ширину по умолчанию. Строковое разрезание и повторение зависят от разрядной ширины вместо того, чтобы проверить и считать символы. (Большинство других языков программирования делает подобные вещи также и имеет столь же нечетное поведение с этими символами.)
  5. существуют несоответствия окружающие платформы GUI для Python.
2
ответ дан Lara Dougan 27 April 2015 в 17:21
поделиться

Lua

, я люблю программировать в Lua, но здесь - то, что записывает меня:

  1. нет никакого способа записать API на языке---ничто как C.h файл или интерфейс Java
  2. , язык имеет первоклассные функции, но кто-то забыл говорить людям, которые разработали библиотеки.
  3. синтаксис для записи функции слишком тяжел.
  4. Синтаксис разделяется между операторами и выражениями.
  5. форма выражения является обедневшей: нет никакой формы, которой 'позволяют', нет никакого истинного условного выражения...

, Несмотря на весь из которого я настою, что Lua является неправдоподобно большим :-)

2
ответ дан Norman Ramsey 27 April 2015 в 17:21
поделиться

C#

большинство моих схватываний имеет отношение к предположению, что конвенции C++ были автоматически лучшим выбором для C#

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

Премия один для .NET (не конкретный C#)

  • Компилятор, не достаточно умный. В.NET 3.x, компилятор может выяснить "var" во время компиляции итак, почему не другая общая оптимизация? Все мы знаем строку по сравнению с StringBuilder / неизменный по сравнению с изменяемой вещью. Почему компилятор не преобразовывает его для Вас, когда во многих случаях очевидно, что StringBuilder лучше, чем несколько concat.s? я уверен, что существуют тонны другой оптимизации, которую компилятор мог сделать для нас по умолчанию (с опцией взять верх) и сэкономить нам массу времени.
3
ответ дан Dinah 27 April 2015 в 17:21
поделиться

.NET платформа (библиотеки)

  • Вложенные типы, редко используемые (например, MessageBoxButton должен быть MessageBox.Button)
  • Изменяемые структуры (Rect, Point)
  • Слишком много материала в System пространство имен
  • Слишком много различных понятий равенства (Object.Equals, Object.ReferenceEquals, operator ==, operator !=, IComparable.CompareTo() == 0)
  • , Массивы имеют изменяемых участников, но неизменную длину.

И еще один:

  • XmlSerialization не работает с неизменными типами
3
ответ дан Jay Bazuzi 27 April 2015 в 17:21
поделиться

C# (хорошо, часть его является VisualStudio IDE, я предполагаю):

  • Никакая ковариантность (все же), как Class<D> не может использоваться вместо Class<B> даже при том, что тип D происходит от Графических дизайнеров типа B.
  • , не поддерживают универсальное основанное наследование (или наследование от абстрактных классов), даже при том, что само наследование работает просто великолепно, если Вы работаете вокруг проблем разработчика путем добавления дополнительных уровней наследования просто, таким образом, разработчики всегда видят конкретные неуниверсальные варианты кода.
  • Никакое наследование конструктора
  • Никакие конструкторы в том, где пункты универсальных параметров типа
  • VisualStudio, кажется, имеет тенденцию загадочно проверить файлы (как файлы проекта и/или определения модульного теста) при открытии решения, даже при том, что файлы, кажется, на самом деле не изменены.

Мог быть другой список, если Вы спрашиваете меня снова завтра. Даже при том, что ковариантность и проблема разработчика будут в моих лучших 5, пока они не будут решены (с различием, добавленным к C# 4.0, это, кажется, произошло для по крайней мере одного из них...).

4
ответ дан 5 revspeSHIr 27 April 2015 в 17:21
поделиться
  • 1
    Это, кажется, единственная доступная библиотека Java, которая имеет эту функциональность. Вы использовали его в продуктивной среде? – Виталий Олегович 3 April 2012 в 05:37

Сам

  • Никакой реальный браузер кода, вместо этого сотни маленьких суетящихся окон.
  • Только исследовательский проект, не достаточно стабильный, никакое активное сообщество.
  • Никакая прилично быстрая версия для Linux или Windows. Только Mac OS X.
  • Никакая поддержка команд стандартной клавиатуры.
  • , О! И документация относительно записи собственных плагинов таким образом устаревшая!
4
ответ дан 2 revsNiko 27 April 2015 в 17:21
поделиться
  • 1
    Если никакие строки не найдены в СУММЕ tbl_Sites, не оценен и возвращает ПУСТОЙ УКАЗАТЕЛЬ. – Lluis Martinez 1 December 2012 в 02:34

Emacs Lisp

  • Там является недостаточным количеством коммерческого рынка для кодирования в elisp полный рабочий день
  • GNU Emacs по сравнению с несовместимостями XEmacs
  • , Вложенные функции в Схеме аккуратны, мне жаль, что elisp не имел понятие [1]
  • , действительно циклично выполняются, или некоторое другое средство для просто цикличного выполнения по списку не является стандартным (предоставленный, Вы можете теперь mapc с лямбдой) [1]
  • должно быть сокращение от (функция (лямбда (...))) [1]

[1], Конечно, одна из красивых вещей о Lisp - то, что не трудно починить эти вещи в Вашем собственном коде с остротой. Тем не менее это раздражает меня, что это не встроено.

Хороший вопрос; я немного смущен, что я не мог придумать лучшие вещи ненавидеть, но честно, Ваша честь, нет очень для ненависти.

4
ответ дан era 27 April 2015 в 17:21
поделиться

Perl представляет неприятный язык.

  1. Никакие "общедоступные" или "частные" или "защищенные" объявления/определения.
  2. "мой $variable_name"; не объявляет глобальное за пределами подпрограммы.
  3. "мой $variable_name"; получен доступ подпрограммами, но "строгим использованием"; или другое "использование "создает предупреждения.
  4. Прототипы функции заканчиваются необъясненные, непродемонстрированные, нежелательные, или некоторое другое оправдание.
  5. Фанатичное использование символа заканчивается "прохладное и быстрое" при чтении шариков символов.
  6. , Когда каждый становится горячим, им нравится оставаться горячими, и не нуждаться ни в чем для охлаждения их.
  7. После недели Perl, я заканчиваю не могущий записать функцию и моделировать его.
  8. , Что такое точно модуль и ему на самом деле НУЖНО" .pm" расширение?
  9. , Если Вы хотите создать общедоступную переменную и получить доступ к ней из подпрограммы, как Вы выполняете это, не создавая предупреждение?
  10. , Где Вы находите некоторые аккуратные сценарии, которые преподают тому некоторый аккуратный Perl?
-7
ответ дан Hhooru 27 April 2015 в 17:21
поделиться
  • 1
    Я также не соглашаюсь, что метод проб и ошибок является ' useless' поскольку большинство надежных алгоритмов восхождения на вершину использует его в какой-то момент. Интересный Google был бы загадкой m4 проект, где этикетки были выступом, на который поднимаются в распределенной сети. Все же, +1, это - ясно лучший ответ на вопрос. – Tim Post♦ 24 October 2009 в 11:24

C является моим фаворитом, но это также ужасно.

  • Это имеет худший препроцессор когда-либо. Почему они не использовали что-то как m4?
  • целый заголовок по сравнению с моделью исходного файла повреждается. Паскаль разобрался в нем с единицами.
  • Этому нужны диапазоны случая в операторе переключения.
  • Объединения и броски от пустоты* повреждают систему типов. Это делает сборщики "мусора" невозможными.
  • Никакие вложенные функции. GNU C имеет это, но это должно быть стандартно.
  • Никакая граничная проверка выделенную память. Существуют инструменты, которые обнаруживают это, но они не обнаруживают ошибки, где часть кода неверно рассчитывает адрес и пишет в выделенный регион, который не связан вообще. Я ненавижу целую адресную арифметику с указателями.
  • Никакая проверка границ массивы.
  • Слишком много проблем относительно мобильности. Даже wchar_t отличается через платформы.
1
ответ дан ahmet demir 27 April 2015 в 17:21
поделиться

PHP

  1. Никакой конструктор, перегружающийся
  2. Непоследовательное именование функции (str_replace, но strtolower)
  3. , определяют (), не заменяет глобальную переменную буквально как C++, делает.
  4. При объединении с XHTML, операторы как оператор "if" должны начаться без добавления отступа, даже при том, что XHTML располагается с отступом, если Вы хотите сохранить добавление отступа XHTML последовательным.

Исключая:

необходимо ввести:

<?php
if($x == NULL)
{
?>
                     <p><?= $x . ' is null' ?></p>
<?php
}
?>
  1. С обнаружением ошибки ужасен

(не уверенный, почему ТАК изменил № 5 на № 1 снова, но безотносительно)

5
ответ дан Logan Serman 27 April 2015 в 17:21
поделиться
  • 1
    Я использовал это для успешного анализа ~180 meg дампов "кучи" только вчера, работ как очарование. – Esko 25 March 2010 в 07:03

Python.

, Хотя странный путь Python имеет дело с объемом, был упомянут, худшее последствие его, я чувствую, то, что это допустимо:

import random

def myFunction():

    if random.choice(True, False):
        myString = "blah blah blah"

    print myString

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

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

6
ответ дан SpoonMeiser 27 April 2015 в 17:21
поделиться
  • 1
    Мы didn' t удается загрузить такие большие дампы "кучи" в jhat, и это, кажется, типичная проблема. Также, поскольку я помню его, когда я использовал его два года назад, это было немного медленно на больших наборах данных. – Rickard von Essen 25 March 2010 в 08:15

C#

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

  • А универсальный аргумент не может быть ограничен перечислениями (только классы или структуры).
  • А универсальным аргументом не может быть статический класс. Почему? Это походит на абсолютно искусственное ограничение.
  • Вы не можете указать, что универсальный тип должен иметь конструктора с определенной подписью, потому что у Вас не может быть конструкторов в интерфейсах. Почему нет? Это - просто другой метод со специальным именем ".ctor".
  • Точно так же Вы не можете указать, что универсальный тип должен иметь статический метод, потому что они также не могут быть объявлены в интерфейсе. Что-то как static T Parse(string s) часто пригождалось бы.
  • компилятор является слишком нетерпеливым в запрещении некоторых бросков, которые знает программист, на самом деле работал бы, таким образом, они требуют уродливости как (TheRealType)(object)value
  • , Никакая ковариантность, например, IList<string> не может быть преобразована в IList<object>, даже при том, что string[] может быть преобразован в object[]. (Microsoft могла бы фиксировать это в C# 4.0, все же.)
6
ответ дан EMP 27 April 2015 в 17:21
поделиться
  • 1
    какая проблема? проблема пространства "кучи" на jvm, работающем jhat? – LB40 26 March 2010 в 01:15

Lua:

  • я понимаю причины, но серьезно. Переменные должны быть локальными по умолчанию, с global ключевое слово, не наоборот.
  • я - в целом не огромный поклонник/конечный стиль семантики. Я очень предпочитаю фигурные скобки C-стиля.
  • Динамический контроль типов. Я знаю, некоторые из Вас идут "Ха?" но я был полностью испорчен путем знания точно, какие данные будут в данной переменной. Постоянный if (type(var) == "string") then stuff() end боль.
  • Переменные не должны быть определены, прежде чем они будут использоваться. Я очень был бы явным о том, что я пытаюсь сделать, чем рискнуть порождением опечатки, что мне нравится называть "дурацкими бобами".

PHP:

  • Снова, динамический контроль типов.
  • Отсутствие закрытий. Я знаю, можно сделать $function($arg);, но это не рассчитывает.
  • Все снова и снова, переменные могут использоваться прежде чем быть определенным. У меня есть персональная политика всегда явной инициализации любой переменной к известному значению, прежде чем я буду использовать его, и я расширяю это до любых документов лучших практик, у меня есть любой вид управления.

C/C++:

  • Заголовки = боль в шее.
  • Никакая поддержка закрытий. (Я взволнован для C++ 0x, который имеет их.)
  • Статический контроль типов. "Ожидайте", Вы говорите. "Вы просто сказали, что Вам не нравится динамический контроль типов!" Да, Действительно говорил я это. Но статический контроль типов может быть болью в торце также. (Если бы дали выбор я все еще выбрал бы статический контроль типов.) Оптимально я хотел бы язык, который был со статическим контролем типов по умолчанию, но поддерживал динамический тип также. (И я также хотел бы пони, и пятьдесят миллиардов долларов, и мир.)
7
ответ дан Sean Edwards 27 April 2015 в 17:21
поделиться

Lua

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

  • Никакая (встроенная) поддержка бинарных операций (с 5,1, это могло бы идти 5.2).
  • Должен иметь встроенную двоичную буферную реализацию, позволяя, например, на месте конкатенацию длинной строки.
  • я знаю, что это не подходит хорошо к синтаксису, но когда-то я пропускаю longVariableName ++ или verboseVariableName + = 5.
  • Ссылка принимает знание C (у меня есть он, но это минус для вновь прибывших), и задерживает некоторую справку к ссылке C! И когда-то это слишком кратко.
  • Это начинает иметь много библиотек, но необходимо получить их от различных мест. С другой стороны, загрузка является очень маленькой! ;-)
12
ответ дан PhiLho 27 April 2015 в 17:21
поделиться

C#

  • мне жаль, что я не мог switch() ни на каком типе, и что case могло быть любое выражение.

  • не Может использовать объектный синтаксис инициализатора с полями 'только для чтения' / private set автоопоры. Обычно я хочу справку языка с созданием неизменных типов.

  • Использование {} для [1 120] метод класса и пространства имен и и блоки свойства/индексатора и составные блоки и инициализаторы массива . Мешает выяснять, где Вы - когда они далеко друг от друга или не соответствовавшие.

  • я очень не хочу писать (from x in y ... select).Z(). Я не хочу должным быть отступать к синтаксису вызова метода, потому что синтаксис запроса пропускает что-то.

  • я хочу do пункт на синтаксисе запроса, который похож foreach. Но это не действительно запрос затем.

я действительно достигаю здесь. Я думаю, что C# является фантастическим, и трудно найти много, это повреждается.

32
ответ дан 2 revsJay Bazuzi 27 April 2015 в 17:21
поделиться

Ruby:

  1. Это чертовски медленно
  2. эгоцентричное сообщество
  3. , Это - не совсем ошибки smalltalk
  4. когда вызывающие методы для ноля вместо того, чтобы просто возвратить ноль Г la Objective C
  5. Несобственный компонент, распараллеливающий
7
ответ дан brian 27 April 2015 в 17:21
поделиться

C:

  • Отсутствие различия между указателями функции (исполняемый файл) и указатели данных (Вы действительно не хотите выполнять это).
  • Экстремальная неудобочитаемость. То, чтобы заставлять код быть похожим на него делает то, что это делает порядки величины, более трудные, чем то, чтобы заставлять это сделать задачу во-первых.
  • Отсутствие ясной поддержки шепелявости - думают. Выполнение функциональных вещей возможно, едва, но это не ясно.
  • Серьезное несоответствие между библиотеками о том, как возвращаются коды ошибок.
  • Устаревшая строковая обработка. Строки не являются строками, они - завершенные пустым указателем блобы. Это - весь способ достойных содрогания.

Lisp:

  • () включает удар клавиши Shift. Каждый раз, когда я делаю много шепелявости, я подкачиваю ее и [].
5
ответ дан Kim Reece 27 April 2015 в 17:21
поделиться
  • 1
    Просто замеченный редактирование. Новый код должен работать лучше, как you' ре захватывая форму и запрашивая его (который ограничивает запрос способом другой код didn' t). Код выше его все еще повреждается, и Вы могли бы хотеть избавиться от него, но по крайней мере у Вас есть что-то, что работает теперь.:) – cHao 5 April 2013 в 03:10

R (R-проект для статистики)

  1. Ужасная, ужасная строковая поддержка
  2. Удивительно трудный для некоторых простых описательных задач, как перекрестное табулирование
  3. Большое управление набором данных сделано в оперативной памяти.
2
ответ дан Gregg Lind 27 April 2015 в 17:21
поделиться

JavaScript;

  1. динамическое связывание "этого" очень сбивает с толку и опасно, если Вы не знаете точно, что Вы делаете.
  2. объявление функции требует ключевого слова "функция". Это не ввод, против которого я возражаю, это - чтение его, когда я хочу сделать что-то немного умное. Hrm теперь, я думаю о нем, возможно, это плюс. Отговаривает меня делать умные вещи.
  3. В результате номера 2, это часто - меньше кода (с точки зрения символов) только к скопировать/вставить сегменту кода, чем объявить это как функцию, если это - довольно короткая идиома. Это, к сожалению, продвигает плохую практику, особенно в моем собственном коде.
  4. JavaScript делает движения будучи функциональным языком при наличии функций первого класса и закрытий, но нет никакого способа проверить ссылочную прозрачность в функции, или в или во время компиляции во время выполнения. Без этого некоторая архитектура становится или опасной или большой.
  5. Его фантастически плохая репутация и таким образом моя неспособность сказать "Я программирую в JavaScript" любому без того, чтобы быть осмеянного.
2
ответ дан Breton 27 April 2015 в 17:21
поделиться

C++:

  • Отсутствие символьного импорта.
  • Сверходержимость совместимостью C.
  • Смехотворно сложный препроцессор.
  • Шаблонные ошибки почти непостижимы.
  • Никакая сборка "мусора".
2
ответ дан cgranade 27 April 2015 в 17:21
поделиться

Java:

  • Никакое процедурное кодирование, которое это компилирует в процессуальный кодекс, Таким образом позволяют мне Использование это!
  • Никакое множественное наследование, пытаясь сделать то же самое с 15 000 интерфейсов сосут.
  • класс Даты, сделайте я должен сказать больше.
  • , Что я не могу использовать полиморфизм для него полный объем. Java не переопределит с различными типами параметра быть для инициирования.
  • я наклоняюсь, думают о пятой причине, если я делаю я возвращен и редактирую это сообщение.
0
ответ дан WolfmanDragon 27 April 2015 в 17:21
поделиться

D

  • мы имеем в операторе, но нет! в операторе?
  • свойство 'длины' динамического массива - ya канна делает

    array.length += 512;

  • никакой оператор выхода - как в sys.exit Python (), и т.д. Несомненно, можно назвать выход C, но невспыхнувший вывод не становятся вспыхнувшими
  • литералы ассоциативного массива +, строковые литералы сосут

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

    char[][char[]] hash = ["hello":"world","goodbye":"angels"];

    не работает без некоторого дополнительного кастинга из-за различных строковых литералов длины несмотря на
    a. Я не попросил, чтобы это было интерпретировано как статические массивы
    , b. статические массивы не позволяются в ассоциативных массивах так или иначе

  • циклические запрещенные зависимости (хотите портировать тот lib Java? Весело проведите время перепроектировав иерархию классов)

, Кто-то проверяет меня на них; не уверенный, если они все все еще релевантны.

4
ответ дан Ellery Newcomer 27 April 2015 в 17:21
поделиться

Oracle SQL

  1. DUAL таблица.

  2. не Может GROUP BY псевдоним.

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

  4. Отсутствие объединенных LIKE и IN условный оператор. (После того, как 10 г там REGEX_LIKE оператор, который мог добиться цели, все же.)

  5. Неловкий синтаксис конкатенации.

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

у меня есть целое, убил проблем с SQL*PLUS. Я записал замену Perl, которая делает то, что я хотел бы из командной строки, и я использую sql.el в Emacs для интерактивного SQL сессии. Эти инструменты помогают мне работать вокруг моего SQL*PLUS проблемы.

<час>

Разговор который:

Perl

  1. "Только [1 111] могут проанализировать Perl". (Но это - главным образом проблема в подсветке синтаксиса, которая я не предпочитаю использовать много больше для любого языка.)

  2. я иногда удивляюсь "простым (но иногда удивляющий) правило...: Это похоже на функцию, поэтому это - функция, и приоритет не имеет значения". (От [1 112])

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

  4. опция No заставить системные вызовы повышать свои ошибки как модуль DBI. (Благодаря brian d foy, я теперь знаю autodie, модуль на CPAN делает это, но я хотел бы его встроенный.)

  5. Предупреждения и резкая критика, не включенная по умолчанию в сценариях. (-e опция выключила бы их для использования командной строки.)

Снова, там обязаны быть большим количеством вещей, но это проблемы, которые я недавно заметил. Я добавил бы потребность в [1 115] и =back и изворотливое L<...> синтаксис в [1 118], но возможно который должен быть отдельным списком.

<час>

Теперь для триады:

KornShell

  1. , Получающий файл с аргументами, заменяет значения аргументов родительского сценария. (Выполнение . file arg1 помещает arg1 в [1 121].)

  2. ksh не идеальная интерактивная оболочка и значения по умолчанию к [1 123] привязки клавиш, а не emacs. (Мое решение состоит в том, чтобы использовать bash для интерактивных оболочек.)

  3. утилиты Common (такой как [1 126]) реализованы по-другому через различные платформы, таким образом, предотвращающие идеальную мобильность. Некоторые полезные команды должны быть установлены на некоторых платформах и являются частью ядра ОС на других.

  4. синтаксис для условных выражений чрезмерно тяжел. (if [ ... ]; then ... fi)

  5. , Хотя это полно по Тьюрингу, Вы в конечном счете собираетесь хотеть переместиться до более выразительного языка как Perl.

Одно решение для № 4 состоит в том, чтобы привыкнуть для срывания оценки:

[ ... ] && ...
4
ответ дан 6 revsJon Ericson 27 April 2015 в 17:21
поделиться

Python

  • , медленный
  • , я наконец привык к оператору печати, и теперь существует эта функция печати??? (py3k)
  • никогда не получал py2exe или cxFreeze работа
  • не стандартизированный (незначительные мелочные придирки)
  • глубина рекурсии только 100 (iirc)
-1
ответ дан Andrew Szeto 27 April 2015 в 17:21
поделиться

Битовые поля C

  1. - они не хорошо указаны языком и как они работают, компилятор, зависимый и архитектурно-зависимый.
  2. часто трудно найти, где конкретный символ определяется в большой массе кода, особенно если тот символ производится макросом. Который напоминает мне...
  3. препроцессор является довольно ужасным взломом, поддающимся всем видам злоупотребления.
  4. отсутствие целых чисел стандартного размера (исправленный uint* _ t в последнее время, но существуют партии и много старого кода, плавающего вокруг там с пользовательскими определениями типов или #defines для DWORD, WORD, БАЙТА, и т.д.)
  5. Отсутствие чего-то сродни cpan.org Perl (хотел бы быть неправильным относительно того.)

Редактирование: При размышлении о CPAN для C я думал..., что будет я называть такую вещь, и мысль "ccan" и поиск с помощью Google его, я столкнулся с этим: http://ccan.ozlabs.org/

Это, кажется, находится пока еще в его младенчестве все же.

2
ответ дан 2 revssmcameron 27 April 2015 в 17:21
поделиться

Perl

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

  • write() и format() функции.

у Них есть единственный худший, самый ужасный, самый ужасающий вообразимый синтаксис, и все же им не удается дать Вам любой [еще 113] функциональность, чем Вы могли уже достигнуть с некоторыми (бесконечно более симпатичный) printf() работа. Никто не должен никогда попытка использовать те две функции, чтобы сделать любой вывод, просто из-за того, как плохо они.

я уверен, что кто-то не согласится, но когда я изучил их, надеясь, что они решат мою проблему, я нашел, что они были "миром боли" (чтобы заключить Большого Лебовски в кавычки) и надеяться, что Perl6 или покончил с ними или, лучше, полностью переписал их, чтобы быть несколько более применимым и полезным.

2
ответ дан Chris Lutz 27 April 2015 в 17:21
поделиться

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

Perl 6

  1. func ("frew")! = func ("frew")
    • Это раздражает меня, но существует серьезное основание для него. В печати Perl 5 (5 + 6) * 10 все еще получает меня время от времени
  2. , может быть легче проанализировать, чем Perl 5 в большом количестве мест, но это все еще иногда уничтожает моего редактора
  3. , Это все еще имеет большой шум в линии Perl 5, который пугает много людей. Это означает, что более трудно получить их взволнованный и т.д.
  4. еще нет никаких библиотек.
    • Это будет не, выходят, если Perl 6 действительно заканчивает тем, что поддерживал Perl 5, но это может быть нагрузкой, которую не стоит перенести.
  5. нет никакого REPL, или что rubyists назвал бы irb.
    • тело А интерактивный Perl 6 с заполнением клавишей Tab, цветовое кодирование, и т.д., сделало бы использование и изучение его настолько более хорошими.
  6. В настоящее время документация является в основном английской спецификацией. Не точно легкое чтение.
  7. я знаю, что это - глупое клише, но это еще не отсутствует!
    • (мне разрешают жаловаться, потому что я помогаю :-P)

первые три являются языком; остальные не действительно сам язык, но то, что он еще не отсутствует.

2
ответ дан 2 revs, 2 users 77%Frew 27 April 2015 в 17:21
поделиться

C#

  1. команда foreach, разбомбившая, когда объект в наборе, перечисляемом изменения,
  2. средства управления UI, плюющиеся макетом, потому что к ним получили доступ на неправильном потоке. Конечно, все вызовы dispatcher.invoke могут быть перемещены в инфраструктуру CLR,
  3. PInvoke, упорядочив и т.д.,
  4. потраченные впустую два года я потратил изучение дистанционной работы,
  5. Это не столь сексуально как Ruby.
3
ответ дан sipwiz 27 April 2015 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: