LINUX.ORG.RU

Как писать проще и эффективнее ?


0

0

Здесь на форуме часто выражалось мнение о том, что C++ в принципе малопригоден для создания программ (редкое применение узкой специфики языка, излишнее умничание на ровном месте или что-то еще...).

Подскажите, пожалуйста, в таком случае язык, который соответствовал следующим требованиям:

1. Кроссплатформенный язык; 2. Мощный, но достаточно простой в освоении ;-); 2. Полная поддержка GUI-интерфейсов (возможно использование чужих GUI-библиотек); 3. Полноценная работа с БД через единый интерфейс (ODBC и др.); 4. Возможность свободного использования макроподстановок (строка кода может быть интерпретирована как код). Программист из меня может быть плохой, но вот идеями меня Бог не обидел!

Поэтому хочется меньше тратить усилий на кодирование и больше - на реализацию замыслов.


C# Не уверен лишь в 4 пункте.

Selecter ★★★★
()

>Поэтому хочется меньше тратить усилий на кодирование и больше - на реализацию замыслов

Раз уж взялся за плюсы - учи плюсы и не разбрасывайся на другие языки. C++ - не хуже и не лучше других. Когда писать научишься, тогда и замыслы будет проще реализовывать. Главное не дергайся и не ввязывайся в эти религиозные войны. А то не доучишь один язык, потом другой ... Вот когда освоишь плюсы, тогда поиграйся с другими языками.

kosmonavt
()
Ответ на: комментарий от anonymous

>Python? Ruby?

Правильнее так:

Python! Ruby(да простят меня поклонники последнего, это от незнания)?

DonkeyHot ★★★★★
()

Common Lisp правда с пунктом 2 у него не совсем хорошо (или совсем не). Пункт 4 не совсем понял, eval имеется ввиду? Или нужны макры?

Begemoth ★★★★★
()
Ответ на: комментарий от kosmonavt

С++ хуже многих языков. Про плюсы вообще лучше забыть. Особенно если человек не программист, изучать С++ как первый язык - очень, очень плохая идея. Для начала Scheme - затем при необходимости Common Lisp.

Begemoth ★★★★★
()
Ответ на: комментарий от anonymous

Пардон, частный случай, конечно.

anonymous
()
Ответ на: комментарий от kosmonavt

Вообще то соглашусь с Бегемотом только в одном - и C и C++ как учебные языки программирования - вещь очень нехорошая. Тут соседка подвязала меня промыть мозги своему внуку-студенту. Его первый язык - C. У бедолаги полный завал. Никак "въехать" не может. Пару лет тому назад нужно было одной девушке объяснить asm. Но у нее уже были знания по паскалю. Через два дня начала програмки на asm писать (получилось растолковать на принципах того же паскаля).

kosmonavt
()
Ответ на: комментарий от kosmonavt

Твой пример с паскалем и ассемблером ни о чём не говорит. C как раз обёртка над ассемблером и с таким расчётом он и создавался - чтобы сделать UNIX портируемым. А паскаль - чисто университетско-академическая поделка и всего-то.

seiken ★★★★★
()
Ответ на: комментарий от seiken

>А паскаль - чисто университетско-академическая поделка и всего-то

Вот именно, а C придумали профи для самих себя. Глянь какие ляпусы на C делают студенты, потому как С для удобства работы. Студенты спотыкаются на адресной арифметике и приведении типов. Их посепенно и последовательно нужно учить, а на C они вынуждены сразу же использовать printf/scanf, чтобы увидеть результат - вот тут и получается замкнутый круг. Т.е. что бы заработали первые примеры они уже должны полностью знать весь синтаксис с адресной арифметикой в придачу с операторами форматированного ввода-вывода.

kosmonavt
()

2gtyrin:

Я бы посоветовал (_прежде_ чем серьезно программировать) постараться освоить как можно больше _различных_ языков.

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

Die-Hard ★★★★★
()
Ответ на: комментарий от kosmonavt

Тут с этим студентом беда какая - учат C на Borland C++ 3.1 т.е. DOS, т.е. сегментированная 16-битная память, т.е. выход на near/far/huge, т.е. обязательно знание аппаратных особенностей i8086 (который они не учили). Обучают под win2000/XP в среде Borland, который под DPMI в этих вынях несколько глюковат. Убил бы того идиота, который это все придумал.

kosmonavt
()
Ответ на: комментарий от kosmonavt

Значит перед/вместо C надо изучать язык ассемблера, но ни в коем случае не паскаль. Паскаль плох тем, что нет стандарта, а у Борланда основной принцип - сделать всё не как у людей.

seiken ★★★★★
()
Ответ на: комментарий от kosmonavt

Тогда уж уточнйте, что язык ассемблера компьютера MIX - MIXAL. А Кнута можно читать и без знания ассемблера - все алгоритмы сначала описываются на "простом человеческом" языке, а только потом реализуются на MIXAL.

Begemoth ★★★★★
()
Ответ на: комментарий от seiken

"Искусство программирования" - книга по алгоритмам и структурам данных, она не предназначена на изучения программирования с нуля.

Begemoth ★★★★★
()
Ответ на: комментарий от seiken

Посмотри какой язык используется в Structure and Interpretation of Computer Programs - а это вводный курс по программированию. Или Абельсон и Суссман ничего не смыслят в преподавании?

Begemoth ★★★★★
()
Ответ на: комментарий от kosmonavt

Покажите мне где в

int main(int argc) { printf("%d\n", argc); }

адресная арифметика и весь синтаксис С. В K&R синтаксис С объясняется постепенно.

А что вы понимаете под ОПЕРАТОРАМИ форматированного ввода/вывода в С? ;-)

Begemoth ★★★★★
()
Ответ на: комментарий от anonymous

лямбда-счисление равномощно машине Тьюринга

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

Отлично. Я ничего не имею против схемы. Другое дело паскаль. Изучать его бесполезно и не факт, что легче ЯА. Паскаль, между прочим, изучают для иллюстрации тех же алгоритмов на первых курсах. Паскаль - это атавизм, никчемная традиция и стереотип мышления старых преподов по информатике и тупиковая ветка развития ЯП. Паскаль развращает людей, делает из них инвалидов.

seiken ★★★★★
()
Ответ на: комментарий от seiken

ЯА сам по себе очень прост и логичен. Языки среднего и высокого уровня ИМХО сложнее для изучения.

ЗЫ: относительно последнего предложения - Pascal = Basic? ;-)

Begemoth ★★★★★
()
Ответ на: комментарий от seiken

Паскаль не задумывался как язык для преподавания - это просто так получилось. Задумка первоначального Паскаля в другом - создать такой синиаксис и семантику, использование которых для написание программ исключит в пр-ме ошибки. Кстати и теперешний паскаль /не от Борланда - он додумывает/ вполне с этим справляется.

Pi ★★★★★
()
Ответ на: комментарий от Begemoth

мне не интересно где - его, можно сказать, нет

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

Pi ★★★★★
()
Ответ на: комментарий от Pi

2Pi:

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

Разве?

IMHO just the other way round.

Можешь привести ссылки?

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Ууупс... напутал... он не задумывался как язык для промышленного программиртвания, а кто-то /вроде из его студентов/ надумал его использовать не только для обучения.

Всё остальное остаётся в силе.

Ещё раз прошу прощения.

Pi ★★★★★
()

Tcl, EcmaScript - на rewrite-семантике. Lisp, Scheme - макры.

Не советую один и тот же язык использовать для БД и GUI.

anonymous
()

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

Дело и в том, что Common Lisp предназначен для создания динамичных и гибких приложений, которые могут обновляться на ходу уже после попадания к конечному пользователю. Это например означает возможность: переопредять функции, классы, методы; добавлять слоты в классы во время работы приложения; добавлять методы и включать их в общую схему работы приложения в то время как во время разработки о них никто и не думал. Хоть языку этому 40 лет, но именно таким я вижу язык будущего, после него в "статичный" С++ возвращаться не хочется. Посмотрите хоть на систему отлова исключительных ситуаций, которая позволяет поместить стратегии восстановления после ошибки рядом с местом ее возникновения, а управлять выбором той или иной стратегии из высокоуровневой функции, позволяя восстановиться не раскручивая стек и продолжить работу с того же места. Как это сделать в С++, так чтобы код был потокобезопасным множество вызовов одной и той же функции не влияли друг на друга?

Отчасти проблема с изучением заключается в отрицательной популярности это языка, странным образом сложившейся после крушения обещаний по ИИ. Хотя те кто не знают эту историю (мой знакомый плюсовед например) почему-то враждебно относятся к Лиспу еще только услышав название, потому-то что слышали, что "это какой-то скриптовый язык где много скобок". Ей-богу так и говорят! ;-)

Но учить и использовать Common Lisp стоит, потому что в настоящее время аппаратные средства позволяют каждому гонять у себя на ПК полноценную его реализацию. Время Лиспа только наступает, все больше появляется людей, выходцев из других языков, которые желают его изучить и использовать для всех нужд (некоторые даже вынуждены использовать скрытно). Гляньте на comp.lang.lisp, за последние годы поток сообщений многократно возрос.

В общем-то Лисп - это не язык, а универсальная идея, чем-то схожая с XML. Этим он и привлекает людей.

Happy hacking Lisper

anonymous
()

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

0. C++ вполне пригоден для создания программ. На самом деле язык неплохой, если правильно пользоваться, просто нету ниши, где он был бы лучше какого-нибудь аналога. Даже с костылями вроде STL. Но чтобы им правильно пользоваться учиться надо не меньше чем Хаскелю и Лиспу вместе взятым. Потом стиль лучше нарабатывать на чем-то более красивом и гармоничном, а то потом трудно переучиваться.

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

2. Если неплохая мат подготовка, то народ прав по поводу Lisp с Tcl/Tk. У этого подхода есть недостатки (трудно забесплатно получить байткод, например, что мешает распространять программы и делать их универсальными для всех сред). Вообще, с лиспом очень приятно работать, но учиться надо довольно долго. Common Lisp - очень большой язык.

Хорошее решение во всех смыслах, кажется, Objective Caml, но я с ним никогда не работал, говорю просто по отзывам. Он, видимо, тоже в этой категории - надо не бояться дискретной математики.

3. Если хорошая мат подготовка (мехмат, ВМК, физические и физмат факультеты лучших вузов, с учетом того, что хорошо учился, или личная хорошая подготовка, плюс еще надо IQ>135 и знание английского для чтения документации), тогда советую Haskell - освоение идей этого языка воспримешь как лучшие недели жизни ;) - я до сих пор под впечатлением, графика возможно wxHaskell или даже wxWidgets сами по себе, а может лучше в Питоновом исполнении. Недостаток: пока неудовлетворительная работа с юникодом. Если это не смущает - то лучше я пока ничего не видел.

> 3. Полноценная работа с БД через единый интерфейс (ODBC и др.); 4. Возможность свободного использования макроподстановок (строка кода может быть интерпретирована как код).

Но про базы данных я мало что знаю, извини. Другие тебе лучше расскажут. Тем более про ODBC. Не ясно также чего ты конкретно хочешь от баз данных. Если веб - то учи питон и не выпендривайся (с) ;)

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

atoku ★★★
()
Ответ на: комментарий от atoku

>Lisp с Tcl/Tk

ну ты сравнил божий дар с яичнецей,

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

anonymous
()
Ответ на: комментарий от Begemoth

а ты учился у них? Извини, аппелирование к авторитетам в виде "или ... по-вашему не смыслят в .." смотрится как "Поезжайте в Киев и спросите чем занимался Паниковский до революции".

anonymous
()
Ответ на: комментарий от atoku

собственно всё вышепечисленное (в теме),
есть в любом современном языке.
Но вот только чтобы правильно ЭТО использовать надо будет изучить,
причем плотно не один язык программирования; плотно в данном случае понимается, что до такой степени чтобы на опыте понять недостатки языка.
Вообще хороший программист, он как буддийский монах, должен пройти несколько просветлений ;-) 
От паскаля к С, первая стадия просветления,
от С к С++ вторая..от них к tcl/lisp это уже дзен ;-)
и так далее..
Паскаль столь нелюбимый пионэрами должен быть обязательно !
И как минимум в загашнике должен быть опыт функционального программирования.

anonymous
()
Ответ на: комментарий от anonymous

> "tcl --- lisp для малАграмАтных"

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

Zert
()
Ответ на: комментарий от anonymous

> От паскаля к С, первая стадия просветления,

Ну и какое тут просветление. Lisp после С/Pascal/C++/Java/C# - это просветление.

> от С к С++ вторая..

Как и в первом случае.

> от них к tcl/lisp это уже дзен ;-)

А Haskell? ;-)

Begemoth ★★★★★
()

>1. Кроссплатформенный язык;

Java

>2. Мощный, но достаточно простой в освоении ;-);

Java

>2. Полная поддержка GUI-интерфейсов (возможно использование чужих GUI-библиотек);

Java

>3. Полноценная работа с БД через единый интерфейс (ODBC и др.);

Java, JDBC

>4. Возможность свободного использования макроподстановок (строка кода может быть интерпретирована как код). Программист из меня может быть плохой, но вот идеями меня Бог не обидел!

Java

>Поэтому хочется меньше тратить усилий на кодирование и больше - на реализацию замыслов.

Java

anonymous
()
Ответ на: комментарий от Die-Hard

>Кстати, C# >На сегодня, пожалуй, более актуально

Актуально потому, что недавно появилось? Или почему?

anonymous
()
Ответ на: комментарий от anonymous

anonymous (*) (08.05.2005 11:14:42)

>Актуально потому, что недавно появилось? Или почему?

Потому что вскоре M$ сделает его для Вындуза примерно тем же, чем является Це для Юникс систем.

Потому что будущее Жабы под большим вопросом: похоже, M$ задалась целью ее уничтожить.

И, потом, ЦеШарп по всем параметрам лучше Жабы.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

>Потому что вскоре M$ сделает его для Вындуза примерно тем же, чем является Це для Юникс систем.
Драйверы тоже на C# будем писать?

seiken ★★★★★
()
Ответ на: комментарий от Die-Hard

замордерирует меня сейчас "тяжело_умирающий пад-палковник" ..

1. Кроссплатформенный язык;

C

2. Мощный, но достаточно простой в освоении ;-);

C

2. Полная поддержка GUI-интерфейсов (возможно использование чужих GUI-библиотек);

C (тут можно_ дважды_прибавить_)

3. Полноценная работа с БД через единый интерфейс (ODBC и др.);

C

4. Возможность свободного использования макроподстановок (строка кода может быть интерпретирована как код).

C+CINT (http://root.cern.ch/root/Cint.html)

Valeriy_Onuchin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.