2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9  След.
 
 Re: Выбор языка программирования
Сообщение28.11.2011, 00:46 
Аватара пользователя


22/09/09

1907

(Оффтоп)

caxap в сообщении #508981 писал(а):
Алгоритмы на графах мне показалось удобней всего реализовывать на Ruby, к тому же он обеспечил мне лёгкий ввод исходных данных из файла. Когда требуется пройтись по первой тысяче простых чисел и что-то чисто математическое проделать с ними, то руби или хаскель курят в сторонке, пока это в три строчки реализуется на Mathematica.
Судя по Википедии Ruby - интерпретатор? Если так, то многие алгоритмы на графах имеют высокую вычислительную сложность, и интерпретатор будет недопустимо медленным выбором. Кроме того, не понял, чем, например, алгоритм Флойда для вычисления матрицы расстояний графа принципиально отличен от решета Эратосфена ("пройтись по первой тысяче простых чисел")? Почему для этих задач нужны разные языки? А Mathematica - это, прежде всего, инструмент, в который зашит свой язык. Тут другой вопрос - вопрос выбора инструмента. И вопрос - писать свою программу или использовать готовую? Чтобы решить стандартную задачу (типа получить список простых чисел и что-то простое с ним сделать) - проще использовать готовую. А для проверки своей идеи (см. стартовый пост) готовой программы нет.

caxap в сообщении #508981 писал(а):
Короче, ТС я советую подучить несколько языков (как и с человеческими -- главное начать, а там уж до полиглотства не далеко) вместо зацикливания на одном.

Согласен, что знать больше (языков и не только) лучше, чем знать меньше :D Но (см. стартовый пост) вопрос был с чего начать и (подразумевалось) как минимизировать усилия. Мне приходилось программировать на многих языках, но помнить все и совершенствоваться во всех времени не хватит. Иногда куски кода из одной программы подходят для другой. Если в основном работаешь на одном языке - это сокращает время. Тут аналогия с естественными языками ИМХО не подходит. (Хотя все они "человеческие" - и естественные, и искусственные, компу они не нужны - ему нужен список инструкций в исполняемом файле :-) ).

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение28.11.2011, 01:27 
Заслуженный участник


11/05/08
32166
bin в сообщении #508942 писал(а):
Примером простого СЯП может служить язык командных файлов MS DOS версии 3. На нем быстро записать задачу очистки директории от мусора (файлы с расширением bak, tmp и т.д.),

Это -- не язык, это просто набор программок для выполнения некоторых (очень некоторых) время от времени встречающихся стандартных задачек.

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение28.11.2011, 02:36 
Аватара пользователя


22/09/09

1907
ewert
Почему не язык? В нем есть переменные, присваивание, условный/безусловный переходы, цикл. Вполне минимальный язык. А как он реализуется - не важно.

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение28.11.2011, 02:48 
Заслуженный участник


27/04/09
28128
Это не DOS, это BAT. То, что DOS обрабатывает специфические команды BAT и запускает программки, описанные там же — нетривиальный факт. Могла бы и не. Это не требуется! Требуется только запускать программы, которые попросили в реальном времени, а для пакетных файлов могла бы существовать отдельная пргограмма. (Что сейчас и наблюдаетсяв графических ОС.)

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение28.11.2011, 03:09 
Аватара пользователя


22/09/09

1907
Думаю понятно, что я хотел сказать своим примером про MS-DOS. При желании могу привести более сложный и строгий пример, но ИМХО для обсуждаемой темы он будет излишен. BTW:

(Оффтоп)

Из википедии: "Пакетный файл (англ. batch file) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла, программа — интерпретатор (как правило COMMAND.COM или CMD.EXE) читает его строка за строкой и последовательно исполняет команды. Пакетный файл — аналог cкриптовых файлов командной строки (shell script) в Unix-подобных операционных системах."

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение28.11.2011, 09:35 
Заслуженный участник


09/08/09
3438
С.Петербург

(Оффтоп)

arseniiv в сообщении #509059 писал(а):
Это не DOS, это BAT. То, что DOS обрабатывает специфические команды BAT и запускает программки, описанные там же — нетривиальный факт. Могла бы и не. Это не требуется! Требуется только запускать программы, которые попросили в реальном времени, а для пакетных файлов могла бы существовать отдельная пргограмма.
Так-таки она и существует и называется command.com (сейчас -- cmd.exe). Само по себе ядро DOS никаких командных файлов не исполняет и языка, на котором они написаны, не понимает. Ему просто нечем.

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение28.11.2011, 10:06 
Заслуженный участник
Аватара пользователя


30/01/06
72407
arseniiv в сообщении #509059 писал(а):
Это не DOS, это BAT. То, что DOS обрабатывает специфические команды BAT и запускает программки, описанные там же — нетривиальный факт. Могла бы и не. Это не требуется! Требуется только запускать программы, которые попросили в реальном времени, а для пакетных файлов могла бы существовать отдельная пргограмма. (Что сейчас и наблюдаетсяв графических ОС.)

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

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение28.11.2011, 20:42 
Аватара пользователя


22/09/09

1907
Munin в сообщении #509091 писал(а):
сколь бы примитивным он ни был, он считается языком
Спасибо - именно это я и хотел сказать.

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение28.11.2011, 21:08 


25/10/10
17
Детский сад!!! Взбодрило...

Про бейсик-паскаль лень повторяться, учите, дети, домашнее задание:
topic37546.html

bin писал(а):
Как известно, в программировании было три революции: структурная, модульная и ОО (объектно ориентированная).
И, как известно, Джон Бэкус (тот самый, изобретатель БНФ) говорил о четвёртой чисто по глупости, ведь он, как известно, ни черта в программировании не смыслил.

bin писал(а):
IMHO есть термин "универсальный язык программирования"(УЯП)
Нет такого термина. Есть термин "язык программирования общего назначения" (general-purpose programming language).

ewert писал(а):
Это -- не язык, это просто набор бла-бла-бла-бла!
Почти всё - это язык. Любой API, любой протокол, и даже любой формат файлов. И потому универсальных языков в природе чисто физически быть не может.

А Maslov ябида корябида солёный огурец на полу валяется никто его не ест

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение28.11.2011, 22:30 
Заслуженный участник


09/08/09
3438
С.Петербург
Postrelyonysh в сообщении #509319 писал(а):
И, как известно, Джон Бэкус (тот самый, изобретатель БНФ) говорил о четвёртой чисто по глупости, ведь он, как известно, ни черта в программировании не смыслил.
Просто для полноты картины, это критический обзор Тьюринговской лекции Бэкуса, написанный другим кое-что смыслившим в программировании человеком:
E.Dijkstra. A review of the 1977 Turing Award Lecture by John Backus (PDF).
Е.Дейкстра писал(а):
In short, the article is a progress report on a valid research effort but suffers badly from aggressive overselling of its significance, long before convincing results have been reached. This is the more regrettable as it has been published by way of Turing Award Lecture.

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение29.11.2011, 08:02 


25/10/10
17
bin писал(а):
А как классифицировать научного работника, который создает новый алгоритм и реализует его в виде программы?
Как математика.

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

В качестве доказательства возьмите наработки по Фортрану: им занимались одни математики, и потому на нём реализовано множество шикарнейших программ, но как ЯВУ он очень, очень плохой. Разумеется, "программист" не знающий даже основ математики, немного, мягко говоря, напрограммирует - но это не значит, что
"математика + 1ЯВУ = профессиональное программирование"

"Искусство программирование" подразумевает проектирование систем, т.е. моделирование сущностей и процессов реального мира на языке абстракций. Обратите внимание - "и процессов". ЯВУ существуют для того, чтобы код мог легко читать человек, а в реальном мире маловато таких аспектов, которые адекватно моделировались бы кучей присваиваний (например, планеты ВРАЩАЮТСЯ вокруг звёзд, а не присваиваются), и значит "программировать" в терминах присваиваний противоестественно. И потому программист просто ОБЯЗАН уметь строить высокоуровневые абстракции. А для этого математики нужно всего ничего - теория графов, логика...

А вот уже дальше начинается самое интересное - развитие технических систем через последовательность метапереходов. Изучением этих вопросов занимается системология в лице ТРИЗа, например, но увы, большинство тех, кто относит себя к "программистам", не знает даже, чем "система" отличается от "набора", так что и не удивительно, что 99,9% программ представляют собой наборы функций, а не системы. Причём в большинстве случаев это ещё и очень уродливые наборы, идеология которых воспитывает формат мышления в прямо противоположном направлении. Взять хоть COM, я уж не говорю о всяком уродстве вроде VCL.

-- Вт ноя 29, 2011 08:05:59 --

Цитата:
but suffers badly from aggressive overselling of its significance, long before convincing results have been reached
Какой ужас! Убийственная, беспощадная критика, навсегда похоронившее ФП! :)

Может, лучше рассмотреть ту статью "Почему никто не использует ФЯ", к которой вы давеча апеллировали? Оно поди интересней будет.

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение29.11.2011, 13:17 
Заслуженный участник


09/08/09
3438
С.Петербург
Postrelyonysh в сообщении #509488 писал(а):
Какой ужас! Убийственная, беспощадная критика, навсегда похоронившее ФП! :)
Да нет, это просто немного другой взгляд на заявленную Бэкусом революцию.

Postrelyonysh в сообщении #509488 писал(а):
Может, лучше рассмотреть ту статью "Почему никто не использует ФЯ", к которой вы давеча апеллировали? Оно поди интересней будет.
Посмотрел старые темы, вспомнил Ваш обворожительный стиль общения -- желания "рассмотреть ту статью" почему-то не возникло.

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение29.11.2011, 16:45 
Аватара пользователя


22/09/09

1907
Postrelyonysh в сообщении #509319 писал(а):
bin писал(а):
Как известно, в программировании было три революции: структурная, модульная и ОО (объектно ориентированная).
И, как известно, Джон Бэкус (тот самый, изобретатель БНФ) говорил о четвёртой чисто по глупости, ведь он, как известно, ни черта в программировании не смыслил.
Что назвать революцией? Некоторые историки, например, каждый мелкий мятеж называют революцией :-) Но, т.к. тема этого топика не об этом, то поправлю свое утверждение: некоторые отмечают три основные революции в программировании: структурная, модульная и ОО. Так годится?

Postrelyonysh в сообщении #509319 писал(а):
bin писал(а):
IMHO есть термин "универсальный язык программирования"(УЯП)
Нет такого термина. Есть термин "язык программирования общего назначения" (general-purpose programming language).
Есть такой термин! См., например: А.Г.Калинин, И.В.Мацкевич, Универсальные языки программирования. Семантический подход. М.: Радио и связь, 1991.

-- Вт ноя 29, 2011 17:01:35 --

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

Да, но если 1) описание полное, 2) в описании нет опечаток и, тем более, ошибок, 3) реализация очевидна (тривиальна) и в ее ходе не возникает подводных камней. Приведу пример нетривиальный реализации: компилятор сложного языка типа С++. Казалось бы: все нужные алгоритмы синтаксического разбора, генерации кода и т.д. - широко известны. Более того, всякие "яки" и "бизоны" генерируют парсеры автоматически из формального описания языка. Так что садись и делай. Однако все специалисты по созданию компиляторов в один голос говорят, что сделать сносно работающий компилятор С++ очень сложная задача, требующая высокого мастерства.

-- Вт ноя 29, 2011 17:06:52 --

Postrelyonysh в сообщении #509488 писал(а):
возьмите наработки по Фортрану
По какому Фортрану? По Фортрану 4 или по современному? - две большие разницы!

-- Вт ноя 29, 2011 17:34:46 --

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

-- Вт ноя 29, 2011 17:44:49 --

Postrelyonysh в сообщении #509488 писал(а):
"Искусство программирование" подразумевает проектирование систем, т.е. моделирование сущностей и процессов реального мира на языке абстракций.
Если согласится с таким определением, то получим, что 99% проф. программистов не владеют этим искусством. На практике, программист зачастую может не знать предметной области, в которой работает. Например, вся химическая и вся горнодобывающая промышленность встали бы, если бы это было не так. Немного найдется проф. программистов, которые знали бы химию или геологию на проф. уровне.

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение29.11.2011, 17:56 
Аватара пользователя


22/09/09

1907
Postrelyonysh в сообщении #509488 писал(а):
планеты ВРАЩАЮТСЯ вокруг звёзд, а не присваиваются
Да. И планеты не знают законов Кеплера! Но есть мат. модели, которые хорошо моделируют вращение планет в терминах этих законов с помощью присваиваний. Ср.: вращение планет не вызвано электрическими импульсами, но его можно моделировать с помощью таких импульсов.

-- Вт ноя 29, 2011 18:00:58 --

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

 Профиль  
                  
 
 Re: Выбор языка программирования
Сообщение29.11.2011, 19:17 
Аватара пользователя


31/10/08
1244
Цитата:
Да, но если 1) описание полное, 2) в описании нет опечаток и, тем более, ошибок, 3) реализация очевидна (тривиальна) и в ее ходе не возникает подводных камней. Приведу пример нетривиальный реализации: компилятор сложного языка типа С++. Казалось бы: все нужные алгоритмы синтаксического разбора, генерации кода и т.д. - широко известны. Более того, всякие "яки" и "бизоны" генерируют парсеры автоматически из формального описания языка. Так что садись и делай. Однако все специалисты по созданию компиляторов в один голос говорят, что сделать сносно работающий компилятор С++ очень сложная задача, требующая высокого мастерства.

По поводу написания компилятора C++. Дело не благодарное.
Язык развивается, изменяется. Но это не главная причина. Дело в том что он очень сложен - имеет кучу правил.
И одной простой формальной грамматикой не описывается. Есть еще семантические правила коих не мало.
Если стандарт Си занимает 700 страниц то стандарт С++ уже 1200, но у стандарта С++ ещё и шрифт меньше в два раза.
Если стандарт Си имеет 7 глав, то С++ уже 28.
Вот попробуй напиши такое? Это вам не книгу перевести, кода будет больше.
Но сложного в написание нет за исключением большого объёма работы.


По поводу определения профессионала от любителя. Есть такое определение. Если человек за свое дело получает деньги то он профессионал. Ни в коем случае не считаю что одно правило даст 100% разделение по классам. Но я считаю что именно это определение лучше других подходит для отделения профессионалов от любителей.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 135 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group