Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - kemiisto

Страницы: 1 [2] 3 4 5
16
Общий раздел / Re: С наступающим!
« : Декабрь 26, 2012, 05:05:38 am »
Вырвиглазные шрифты на графиках. А Linux по-российски стабилен в этом плане! ;D

17
Общий раздел / Re: С наступающим!
« : Декабрь 26, 2012, 05:01:48 am »
Полотно осилил. :D


Всех с Наступающим! :)

18
Ада - редкостная дрянь. Из когорты цеплюсплюсов и хацкелей. Извращение малолетных. В колонию на пару лет за такие новые идеи в образовании надо.

19
Кроме Игры престолов посоветую Спартаков и Рим.


Сезон 1.Спартак: Кровь и песок.
Приквел. Спартак: Боги арены.
Сезон 2. Спартак: Месть.


Рим так и называется и там просто 2 сезона.

20
Общий раздел / Re: Neko
« : Ноябрь 21, 2012, 06:03:54 pm »
Имхо для оберона проще всего замутить свой байткод и виртуальную машину. Что то вроде P-кода.
Повторить путь первых паскалей короче  ;)
Реализацию виртуальной машины можно будет под все мыслимые платформы замутить. Там исходник то как помнится строк 300 от силы  ;D
Будете делать свою VM - повторите не только путь, но и судьбу паскалей. R.I.P.

21
Большая часть той коллекции нахер никому не впилась если уж совсем по чесноку.
Какая жирная клевета. :D


По сабжу поддержу DIzer'а - забейте на натив. Пилите лучше GPCP. JVM/.NET на Ваш выбор.

22
H. Mössenböck. Twin - A Design Pattern for Modeling Multiple Inheritance.
J. Templ. A systematic approach to multiple inheritance implementation.

23
2 путь тупиковый - моновендор С++ выдавить не сможет. Тем более моновендор который заточен под винду.
Это спорное утверждение. Моновендор может выдавить С++ (из определённых ниш, конечно), но заточенность под одну платформу тут таки помешала бы. А так, у Sun же получилось. Наверное, можно было сконцентрировать усилия на развитии FPC и заточить под него среду разработки (пускай и виндовую, но с возможностью кросс-компиляции). Под OS X и iOS оно в итоге так сейчас и работает.

24
Да. Это феерично.
Вся статья феерична. Глупость почти в каждом предложении.

25
Так каков правильный вариант? :)

26
Сложилась цепочка: математики не могут (или не хотят) понять физику, физики не могут или не хотят понимать химию. Чего же не могут (не хотят) понимать химики? :-)
Математику!  :D  Круг замкнулся! Мы все умрём! :o

27

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


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


Для примеру QuickSort'ы из АиСД:

MODULE sorts


  USE math


  IMPLICIT NONE


  PRIVATE


  PUBLIC :: sorts_non_recursive_quick_sort, sorts_quick_sort


  CONTAINS


    ! Non-recursive implementation of Quicksort algorithm.
    ! From N. Wirth, Algorithms and Data Structures, Oberon version: August 2004.
    !
    SUBROUTINE sorts_non_recursive_quick_sort(array)
      INTEGER, DIMENSION(:), INTENT(INOUT) :: array
      INTEGER, DIMENSION(:), ALLOCATABLE :: left_bounds, right_bounds
      INTEGER :: left_index, right_index, left_bound, right_bound, s, &
        pivot_element, temp, stack_size


      ! The stack size can be limited to lb(n)
      stack_size = ceiling(math_lb(real(size(array))))
      ALLOCATE (left_bounds(stack_size), right_bounds(stack_size))


      s = 1
      left_bounds(1) = 1
      right_bounds(1) = size(array)


      DO
        ! Take top request from stack.
        left_bound = left_bounds(s)
        right_bound = right_bounds(s)
        s = s - 1
        DO
          left_index = left_bound
          right_index = right_bound
          pivot_element = array((left_bound + right_bound) / 2)
          DO
            DO WHILE (array(left_index) < pivot_element)
              left_index = left_index + 1
            END DO
            DO WHILE (pivot_element < array(right_index))
              right_index = right_index - 1
            END DO
            IF (left_index <= right_index) THEN
              temp = array(left_index)
              array(left_index) = array(right_index)
              array(right_index) = temp
              left_index = left_index + 1
              right_index = right_index - 1
            END IF
            IF (left_index > right_index) EXIT
          END DO
          IF (right_index - left_bound < right_bound - left_index) THEN
            ! Stack request for sorting right partition ...
            IF (left_index < right_bound) THEN
              s = s + 1
              left_bounds(s) = left_index
              right_bounds(s) = right_bound
            END IF
            ! and continue sorting left partition.
            right_bound = right_index
          ELSE
            ! Stack request for sorting left partition ...
            IF (left_bound < right_index) THEN
              s = s + 1
              left_bounds(s) = left_bound
              right_bounds(s) = right_index
            END IF
            ! and continue sorting right partition.
            left_bound = left_index
          END IF
          IF (left_bound >= right_bound) EXIT
        END DO
        IF (s < 1) EXIT
      END DO


      DEALLOCATE (left_bounds, right_bounds)
    END SUBROUTINE sorts_non_recursive_quick_sort


    SUBROUTINE sorts_quick_sort(array)
      INTEGER, DIMENSION(:), INTENT(INOUT) :: array


      CALL sort(1, size(array))


      CONTAINS


        RECURSIVE SUBROUTINE sort(left_bound, right_bound)
          INTEGER, INTENT(IN) :: left_bound, right_bound
          INTEGER :: left_index, right_index, pivot_element, temp


          left_index = left_bound
          right_index = right_bound
          pivot_element = array((left_bound + right_bound) / 2)


          DO
            DO WHILE (array(left_index) < pivot_element)
              left_index = left_index + 1
            END DO
            DO WHILE (pivot_element < array(right_index))
              right_index = right_index - 1
            END DO
            IF (left_index <= right_index) THEN
              temp = array(left_index)
              array(left_index) = array(right_index)
              array(right_index) = temp
              left_index = left_index + 1
              right_index = right_index - 1
            END IF
            IF (left_index > right_index) EXIT
          END DO


          IF (left_bound < right_index) CALL Sort(left_bound, right_index)
          IF (left_index < right_bound) CALL Sort(left_index, right_bound)
        END SUBROUTINE sort


    END SUBROUTINE sorts_quick_sort


END MODULE sorts


Конечно, 1-в-1 писать зачастую бессмысленно, так как, например, отказываться от развитых средст работы с массивами - себе дороже. А interoperability с сишечкой - суровая реальность. Зато можно биндится к сишным либам без геморроя.

28
Общий раздел / Re: Application Developer Days-3
« : Апрель 19, 2012, 05:22:22 pm »
В общем, я там буду, и буду задавать в меру и не в меру глупые и не скромные вопросы разным докладчикам :-)
Нет бы устроить акт самосожжения во славу Оберона... ;D

29
Общий раздел / Re: Обработка "ошибок".
« : Апрель 18, 2012, 10:03:40 am »
Ещё как вариант (пускай и не всегда применимый) - действовать как большинтсво компиляторов при синтаксическом разборе. Встретил ошибку - не беда, добавил в список и пошёл дальше. В конце прохода (или при накомплении некого критического числа ошибок) - остановился и выплюнул накопленный список. Кому надо :D , знает куда смотреть.

30
Общий раздел / Re: Обреботка "ошибок".
« : Апрель 18, 2012, 07:25:05 am »
Наверное как вариант, можно предложить в каждую функцию передавать параметр ошибки, и если он есть, то внутри функции уже не отрабатывать.
Передавать не всегда обязательно. Можно просто иметь некую "глобальную" переменную err, например, поле объекта, а вызываться будут его методы.

Страницы: 1 [2] 3 4 5