Паскаль и его текущие приложения [закрываются]

То, что вы просите, - это способ раздачи заданий, но с некоторым верхним пределом. Один простой подход к этому - использовать семафор для координации предела. Вот как я бы подошел к этому:

(let [limit (.availableProcessors (Runtime/getRuntime))
      ; note: you might choose limit 20 based upon your problem description
      sem (java.util.concurrent.Semaphore. limit)]
  (defn submit-future-call
    "Takes a function of no args and yields a future object that will
    invoke the function in another thread, and will cache the result and
    return it on all subsequent calls to deref/@. If the computation has
    not yet finished, calls to deref/@ will block. 
    If n futures have already been submitted, then submit-future blocks
    until the completion of another future, where n is the number of
    available processors."  
    [#^Callable task]
    ; take a slot (or block until a slot is free)
    (.acquire sem)
    (try
      ; create a future that will free a slot on completion
      (future (try (task) (finally (.release sem))))
      (catch java.util.concurrent.RejectedExecutionException e
        ; no task was actually submitted
        (.release sem)
        (throw e)))))

(defmacro submit-future
  "Takes a body of expressions and yields a future object that will
  invoke the body in another thread, and will cache the result and
  return it on all subsequent calls to deref/@. If the computation has
  not yet finished, calls to deref/@ will block.
  If n futures have already been submitted, then submit-future blocks
  until the completion of another future, where n is the number of
  available processors."  
  [& body] `(submit-future-call (fn [] ~@body)))

#_(example
    user=> (submit-future (reduce + (range 100000000)))
    #<core$future_call$reify__5782@6c69d02b: :pending>
    user=> (submit-future (reduce + (range 100000000)))
    #<core$future_call$reify__5782@38827968: :pending>
    user=> (submit-future (reduce + (range 100000000)))
    ;; blocks at this point for a 2 processor PC until the previous
    ;; two futures complete
    #<core$future_call$reify__5782@214c4ac9: :pending>
    ;; then submits the job

Теперь, когда вам это нужно, вам просто нужно скоординировать выполнение самих задач. Похоже, у вас уже есть механизмы для этого. Цикл (submit-future (process-queue-item))

33
задан Andrioid 8 June 2009 в 23:17
поделиться

8 ответов

Обратите внимание, что более старые (1.0.x) версии компилятора Free Pascal исходники были эффективно совместимы с Turbo Pascal (так как его можно было отлаживать с помощью TP), что демонстрирует базовый Pascal возможности.

Вопрос об использовании Pascal в качестве базового языка примерно такой же, как и для C, поскольку они почти эквивалентны на уровне языка. Единственное различие заключается в количестве, универсальности и качестве компиляторов.

Я настоятельно рекомендую пойти в направлении диалекта Delphi (либо с использованием Delphi, либо Lazarus / FPC), а не возвращаться к Turbo.

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

Turbo Pascal был одним из (если не THE) основные компиляторы эпохи DOS,

30
ответ дан 27 November 2019 в 17:41
поделиться

Что ж, давайте вспомним Lazarus, бесплатный клон Delphi:

http://www.lazarus.freepascal.org/index.php

и FreePascal:

Free Pascal ( aka FPK Pascal) - это 32- и 64-битный профессиональный компилятор Pascal. Он доступен для разных процессоров: Intel x86, Amd64 / x86_64, PowerPC, PowerPC64, Sparc, ARM.

http://www.freepascal.org/

9
ответ дан 27 November 2019 в 17:41
поделиться

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

-2
ответ дан 27 November 2019 в 17:41
поделиться

Установка свойства Value автоматически закодирует строку html. Это должно помочь, но вам необходимо убедиться, что ваш HTML-код является допустимым XML (XHTML).

currentReport.Element("recomendations").ReplaceNodes(XElement.Parse(myCallreports.Comments));

Изменить: Вам может потребоваться заключить введенный пользователем HTML-код в

теги. XElement.Parse ожидает найти строку с как минимум начальным и конечным тегами xml. Так что это может сработать лучше:

currentReport.Element("recomendations").ReplaceNodes(XElement.Parse("<div>" + myCallreports.Comments + "</div>"));

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

Редактировать 2 : Другой вариант - использовать XML CDATA . Оберните HTML с помощью и ]]> ,

4
ответ дан 27 November 2019 в 17:41
поделиться

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

Что за тупица. Существует множество библиотек, которые могут использоваться Delphi, FreePascal и Lazarus.

Как говорит Макваффлестикс, есть смысл иметь упрощенную среду

«Упрощенная среда»? Это просто унизительно. Я бы сказал, что он всегда был довольно изощренным.

12
ответ дан 27 November 2019 в 17:41
поделиться

Я думаю, что основной причиной популярности Turbo Pascal был не язык Pascal, а IDE. Насколько я помню, с ним было действительно легко работать, это было быстро, и даже отладка доставляла удовольствие.

С другой стороны, язык Паскаль был устаревшим, поэтому Borland добавила немало вещей к языку Паскаль (и сделала их язык более похожим на Модуль-2).

0
ответ дан 27 November 2019 в 17:41
поделиться

Никто еще не упомянул, что TeX (и METAfont и другое TeXware) написано на Паскале.

В начале 90-х я разработал коммерческие приложения X / Motif CAD, используя собственный диалект Паскаль.

9
ответ дан 27 November 2019 в 17:41
поделиться

Выполняя поиск по ключевому слову «паскаль», фильтруя результаты с помощью «язык программирования» => «паскаль», вы найдете множество приложений паскаль, если не корпоративного уровня, то по крайней мере серьезных уровень программиста.

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

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

3
ответ дан 27 November 2019 в 17:41
поделиться
Другие вопросы по тегам:

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