В чём начинали? Железо. Ностальгия.

Я отношусь к своему компьютеру:

  • как к рабочему инструменту, не более...

    Голосов: 26 54.2%
  • как к " практически живому" существу...

    Голосов: 18 37.5%
  • не определился...

    Голосов: 4 8.3%

  • Всего проголосовало
    48
Статус
Закрыто для дальнейших ответов.

JAW

15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Древний язык БЕЙСИК

Кстати...
А кто нибудь работал на оригинальной IBM PC?
Я работал... Правда на слегка модифицированной, добитой до XT ;) и с внешним винчестером.

Вот это я вам скажу вещь... Неубиваемая в принципе. Прекрасная клавиатура.
Одно плохо... Нам её так и не удалось русифицировать, приходилось в Лексиконе тексты набирать.
 

denisgrim

Участник
Сообщения
1 171
Реакции
1
Ответ: Древний язык БЕЙСИК

Вопрос к программистам:
какой язык сейчас наиболее современный, универсальный, удачный, и лёгкий в освоении? (у меня был опыт программирования на Бейсике в детстве - не более)
То есть, если речь будет идти о том, чтобы для общего развития (и практического использования) освоить язык программирования, то что посоветуете?
 

JAW

15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Древний язык БЕЙСИК

Это очень сложный вопрос...
Майнстрим - C++

Наиболее удачный, с моей точки зрения, это Oberon.
Возможно (т.к. Oberon практически не распрострнён, это ObjectPascal (Delphy))
Из скриптовых, пожалуй Питон.
 

ch_alex

Погулять вышел.
15 лет на форуме
Сообщения
8 420
Реакции
2 709
Ответ: Древний язык БЕЙСИК

JAW сказал(а):
ch_alex
Лучше забудь о Java как о страшном сне...
Посмотри на OpenSource аналоги ТурбоПаскаля, например FreePascal, кажется...
Не могу. ;)
Эта java ставится по поводу и без повода. Например, FIERY для цифровой машины имеет софт для калибровки, реализованный в моей версии на java 1.5. Тот же OpenOffice, в котором я реализовал первую версию калибровки (без макросов, только табличными методами) также позволяет использовать java, python.
 

Fog_patch

12 лет на форуме
Сообщения
3 163
Реакции
998
Ответ: Древний язык БЕЙСИК

JAW сказал(а):
Это очень сложный вопрос...
Майнстрим - C++

Для десктоповых приложений да. C++ рулит не подеццки. Но для всяких бизнес-приложений C++ уже давно не рулит. Дело в том что это очень свободный и в тоже время требовательный язык. Свободный в плане вольностей (например мелкософт сейчас усиленно продвигает C#, который более лаконичен и строг), а требовательный в плане напряжения внимания. Ошибка на C++ может полностью вырубить всю систему (и приложение и операционку), вызвать переполнение памяти и прочее, а жаба обладает такой платформой, которая "прощает" многие мелкие огрехи. Возникла ошибка, платформа ее подавила и работает дальше без обвалов. Поэтому всякие банки, операторы связи, энергетики и прочие строят свои системы на жабе и на .NET. Потому как если у вас вылетит фотошоп, то потеря будет самое большое — несколько тысяч руб/$, а если вылетит что-нибудь в банке, то потери будут огромные. Как правило компании нанимают команды в которой есть верхушка (1-2 кодера) которые могут с минимальными ошибками писать на C++, и целую кодлу кодеров средней руки для жабы.

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

MorLock

Участник
Сообщения
591
Реакции
0
Ответ: Древний язык БЕЙСИК

Си — вечен.
 

JAW

15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Древний язык БЕЙСИК

Всё таки C - очень плохой язык.
Именно по тем причинам, про которые написал Fog_patch.

Виртовские языки (Pascal - Modula - Oberon) IMHO гораздо более грамотны и удобны.
Строгая типизация в них позволяет резко уменьшить количество ошибок.

Кстати, что интересно... Вирт, насколько понимаю, досих пор отказывается от ООП. Не Модула не Оберон не поддерживали концепцию ООП (впрочем энтузиасты ее туда всё таки впихнули).
 

Fog_patch

12 лет на форуме
Сообщения
3 163
Реакции
998
Ответ: Древний язык БЕЙСИК

MorLock сказал(а):

Если речь идет об отдельных энтузиастах, то все языки потенциально "вечны". Но что касается широкого использования чистый Си остался только для непосредственного общения с железом (драйвера всякие и пр).
C++ имеет более широкие перспективы, но и они как я говорил сокращаются. У C++ имеются все шансы полностью уйти в системное программирование, оставив всё остальное для managed-платформ.
 

Fog_patch

12 лет на форуме
Сообщения
3 163
Реакции
998
Ответ: Древний язык БЕЙСИК

Кстати, вы (обращаюсь ко всем) заметили как стали работать эдобовские приложения в последних версиях?
Например шоп. Открываем картинку, редактируем, потом другую редактируем, потом третью и т.д. Потом все картинки закрываем, но чувствуем что с системой что-то не то... Ctrl+Alt+Del а шоп выжирает уже полтора гига памяти, причем уже пустой без единой открытой картинки. Вот вам и утечки памяти.
 

MorLock

Участник
Сообщения
591
Реакции
0
Ответ: Древний язык БЕЙСИК

Fog_patch сказал(а):
Если речь идет об отдельных энтузиастах, то все языки потенциально "вечны". Но что касается широкого использования чистый Си остался только для непосредственного общения с железом (драйвера всякие и пр).
C++ имеет более широкие перспективы, но и они как я говорил сокращаются. У C++ имеются все шансы полностью уйти в системное программирование, оставив всё остальное для managed-платформ.
да, думаю так и будет.

Да пожалуй, так уже и есть.
 

Samsonov

Участник
Сообщения
886
Реакции
89
Ответ: Древний язык БЕЙСИК

denisgrim сказал(а):
Какой язык сейчас наиболее современный, универсальный, удачный, и лёгкий в освоении язык? (Был опыт программирования на Бейсике).
Вот и продолжайте в том же духе — см. в сторону Visual Basic .NET (версия 7.0 и новее). Там и объекты уже есть в более-менее удобоваримой форме, и шаблоны классов, и придирчивостью компилятора можно управлять (от классического всепопустительства до самых строгих проверок типов и присваиваний, поиска лишнего кода), и готовых функций в библиотеке .NET просто море. То есть писать можно практически всё что угодно, от распределённых приложений до консольных утилиток или системных служб.

Мелкософт даёт на халяву базовые версии всех нужных продуктов:
  • Visual Basic/C#/C++ Express Edition — сама среда разработки; к сожалению, справка только онлайновая;
  • SQL Server Express Edition — кому нужно СУБД; гуйня для неё (типа Access) лежит там же и называется SQL Server Management Studio Express.

Единственное, во что поначалу трудно въехать привыкшим к самостоятельной работе с памятью (в том числе UDT/struct) — так это то что в .NET программы не совсем нативные. То есть это скорее как виртуальная машина. Там нельзя просто взять структуру и записать её в файл одним махом. Надо либо объявлять её по-особому, чтобы все элементы маршалировались как скалярные значения, либо писать класс форматирования, который занимался бы сериализацией состояния объекта.



Но сам язык — это ещё полдела. Листинг программы на современном Бейсике по виду мало чем отличается от Си, Явы и кучи других языков со сходным синтаксисом; только что уровень абстракции примерно посередине между C++ и Java/PHP. Это всё лингвистические нюансы. Главное, разобраться в самом объектно-ориентированном методе. Я имею в виду не азы типа «что такое инкапсуляция, полиморфизм и наследование», а такую штуку как паттерны проектирования — то есть приёмы ООП, готовые концепции для формирования связи между объектами и создания универсального кода, который можно использовать повторно и который хорошо масштабируется. Тема эта новая, «у них там» начала развиваться только в 90-х, а у нас тут в академической среде про неё, наверное, ещё не скоро заговорят. Но книги переводные продаются давно. Например, перевод Книги Четырёх у нас встречается в двух видах [1], [2].

Но и паттерны — это ещё не всё. Так уж получилось, что впервые я встретил паттерны в книге, которую брал для знакомства с UML, под названием «UML и шаблоны проектирования» (свежее издание). Там написано более простыми словами, даже больше материала, и без закосов в программирование. Однако суть в другом. Этот автор вселил в меня оптимизм, наглядно показывая, что итеративный подход к проектированию и воплощению, к которому я всегда был интуитивно склонен, — это не только не методическая ересь, но и куда более гибкая технология реализации проектов, нежели классический путь с жёсткой фиксацией всех требований до начала программирования. Одним словом, рекомендую почитать в первую очередь, даже если непосредственно к программированию лично вы не имеете никакого отношения. А уже потом повторять и углублять знания о паттернах по Книге Четырёх.
 

Samsonov

Участник
Сообщения
886
Реакции
89
Ответ: Древний язык БЕЙСИК

Fog_patch сказал(а):
Вы заметили, как стали работать эдобовские приложения в последних версиях? Открываем картинку… потом все картинки закрываем, но… шоп выжирает уже полтора гига памяти.
Разве раньше было иначе? Помнится, ещё в 3.0.5 я как-то отсканировал 30-меговую картинку на компьютере, где было свободно менее 200 Мбайт харда. Несложная ретушь — и вот уже система орёт о заполнении диска. Очистил буфер undo — никакой реакции. Нет на диске места для сохранения, и всё тут. Так и пришлось выкидывать картинку, закрывать Шоп, чистить место, ребутиться (тогда ещё была 95-я) и начинать всё по-новой.

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

@diz@

отечеств. про
Топикстартер
15 лет на форуме
Сообщения
4 220
Реакции
1 914
Ответ: Древний язык БЕЙСИК

Samsonov сказал(а):
Оптимизацией кода уже никто и не пытается заниматься по-настоящему, наверное, — проще заставить юзера раскошелиться на новый компьютер, чем тратить свои (и юзера) деньги на многолетнюю шлифовку кода.
Наверное это стратегическая недоделка гейтса, или давно задуманный маркетинг.
А скорее всего прокол, плавно перетёкший в маркетинг.
Чистка мусора в окнах с самого начала была нулевой.
А кодить можно в том, в чём удобно.
Так же, как и верстать, рисовать и т.д.
 

denisgrim

Участник
Сообщения
1 171
Реакции
1
Ответ: Древний язык БЕЙСИК

Samsonov, спасибо огромное за развёрнутый ответ! У меня тоже были мысли не вымудрять, а просто продолжить изучение Бейсика. Благо, различные его вариации присутствуют в Кореле, МС Офисе, и прочих приложениях.
Однако, ещё вопрос: а чем же тогда плох Бейсик (даже в современном обличье)? Программы медленно работают? Какие-то моменты нельзя реализовать?
Вопросы чайника, и быть может не для этого форума, но... раз уж мы в рамках темы, то я буду спрашивать :)
 

Kamandre

12 лет на форуме
Сообщения
1 130
Реакции
421
Ответ: Древний язык БЕЙСИК

@diz@ сказал(а):
Наверное это стратегическая недоделка гейтса, или давно задуманный маркетинг.
А скорее всего прокол, плавно перетёкший в маркетинг.
Чистка мусора в окнах с самого начала была нулевой.
А кодить можно в том, в чём удобно.
Так же, как и верстать, рисовать и т.д.
Как было сказано в известном фильме Гейтсом в ответ на выпад Джобса "А наша ОС лучше работает!" -- "А это уже неважно...".
Изначально скорость=ухудшение качества
 

JAW

15 лет на форуме
Сообщения
15 797
Реакции
3 454
Ответ: Древний язык БЕЙСИК

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

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

К хорошести языка я бы отнес:
1) Возможность однопроходной компиляции (собственно по этой причине Borland и выбрал Pascal для Delphy)
2) Строгая типизация позволяющая контролировать ошибки на стадии компиляции (Этим плох C)
3) Возможность создания динамических типов данных.
4) Достаточная однозначность между языком и ассемблерным кодом (мы должны иметь возможность оптимизации)
5) Возможность оптимизации и паралельности.

Может быть что-то еще...

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

Fog_patch

12 лет на форуме
Сообщения
3 163
Реакции
998
Ответ: Древний язык БЕЙСИК

denisgrim сказал(а):
Однако, ещё вопрос: а чем же тогда плох Бейсик (даже в современном обличье)? Программы медленно работают? Какие-то моменты нельзя реализовать?

Ради добавления хумора могу процитировать Дейкстру : "Практически невозможно научить хорошо программировать студентов, ориентированных первоначально на Бейсик: как потенциальные программисты они умственно оболванены без надежды на исцеление" '))'
Хотя сейчас это неактуально. Наш Билли очень любил бейсик и его мелкософтная компания вознесла его до небес. Сейчас бейсик.NET уже по настоящему серьезный язык.
 

magneto

рептилоЙд
15 лет на форуме
Сообщения
5 643
Реакции
4 364
Ответ: Древний язык БЕЙСИК

Kamandre сказал(а):
в известном фильме
Давно мечтаю посмотреть, но не могу найти.
 

Samsonov

Участник
Сообщения
886
Реакции
89
Ответ: Древний язык БЕЙСИК

denisgrim сказал(а):
Благо, различные вариации Бейсика присутствуют в Кореле, МС Офисе, и прочих приложениях.
Не скажу за Корел, но вот в Офисе — там не совсем Visual Basic. Там нечто иное: Visual Basic for Applications. Это такая как бы застывшая во времени копия VB4, да ещё урезанная или типа того. То есть более-менее продвинутая, но не самая достойная инкарнация — годится лишь для написания вспомогательных скриптов. Причём после внедрения такой программы в лист Excel, он начинает гораздо дольше сохраняться, усиленно шурша диском, тогда как обычный документ записывается на раз.

Чем же тогда плох Бейсик даже в современном обличье?
Версию 10.0 (2008) не изучал, а вот 9.0 (2005) пока ещё имеет некоторые ограничения, не позволяющие языку называться полноценным объектно-ориентированным. Например, можно наследовать сколько угодно интерфейсов, но всего одну реализацию, то есть родительский класс может быть лишь один единственный. Аналогично, формы (окна) могут наследовать только от базового класса Form, но не друг у друга. Не всем программистам это важно, и я сам до недавнего времени о таком никогда не задумывался, но сейчас оно мне местами усложняет жизнь.

Программы медленно работают?
Все программы на платформе .NET должны работать примерно одинаково быстро. Вопрос лишь в оптимизации на этапе компиляции, но я думаю, что тут радикальных различий нет. Другое дело, что начинающий программист на Бейсике может быть склонен применять «дорогие» решения (особенно в режиме вседозволенности), даже не задумываясь, чего это стоит на этапе выполнения. Но это ж не проблема языка, правда?

Классический пример — считывать текстовый файл построчно, и добавлять очередную строку в конец ранее загруженного текста: sText = sText & sLine. На старых компьютерах было хорошо видно, что когда текст маленький (1 Кбайт), это работает мгновенно, но если размер увеличивается хотя бы до 32 Кбайт, то загрузка файла может длиться пару секунд. А ведь всего-то и надо, что записывать строку в заранее созданный большой буфер; программист на Си так бы и сделал просто от безысходности. Кстати, для подобных целей в .NET есть готовый класс StringBuilder.

Какие-то моменты нельзя реализовать?
Ну, я бы не брался за написание низкоуровневого драйвера или операционной системы. :)
 

Samsonov

Участник
Сообщения
886
Реакции
89
Ответ: Древний язык БЕЙСИК

JAW сказал(а):
Basic — интерпретрующий язык, причем это принципиально интерпретатор.
Не знаю, как там в 60-х годах, но из того что я видел, Бейсик практически никогда не был «принципиальным» интерпретатором. Разве что на ZX Spectrum можно было написать PRINT VAL("5*X+SIN(PI)"), и он бы это вычислил. А что касается Microsoft Basic, там с точки зрения программиста не было никакой разницы, транслирован ли код в машинные команды или интерпретируется вживую.

Компиляторы BASIC, это псевдокомпиляторы.
Характерным в этой фразе является использование маюскулярной формы записи: BASIC. В противоположность древним версиям, современные реализации называются Basic.

То есть производительность программы на BASIC будет всегда относительно низкой.
Возьмите QuickBasic 4.0/4.5, откомпилируйте программу (без «Enable debugging», разумеется) и посмотрите, во что превращаются операции типа A = B + C. Лично смотрел — там простое сложение, даже без каких-либо проверок на переполнение.

Все тормоза — от некачественного программирования, от использования простых, но прожорливых методов. Математика всё равно выполняется в библиотеках, написанных на Си; я как-то сравнивал скорость вычислений Borland C 3.0 с использованием сопроцессоров x87 и через программную эмуляцию — получалось абсолютно одинаково.

Ещё одно разочаровывающее многих обстоятельство: то что вывод графики был медленный. Но так это потому что всё делалось через стандартные функции и без буферизации. Библиотеки BGI в Си/Паскале работали точно с такой же скоростью и такими же мельканиями. Кто искал, тот находил специализированные пакеты, которые позволяли работать быстро и в любом режиме VESA, а не только в стандартных VGA. С таким же успехом, даже если вы сейчас в .NET начнёте рисовать на форме через обычный Graphics, то при многократной отрисовке будут заметны и тормоза, и мелькания. Надо использовать BufferedGraphics; да, это сложнее и более трудоёмко, но ненамного, а зато результат на пять баллов.


Возможность однопроходной компиляции (собственно по этой причине Borland и выбрал Pascal для Delphy).
Ага. И именно по этой причине получается полное обломинго с использованием паскалевских наработок в других языках. Нет объектного файла — нельзя и подключить в качестве библиотеки. Приходилось всё писать на низкоуровневом Си.

Да, кстати, о библиотеках. Я тут как-то пытался написать DLL на .NET, и долго не мог понять, почему ни одна «unmanaged» программа (то есть не-.NET) не видит экспортируемых функций. Видимо, из .NET можно экспортировать только в .NET, тогда как импорт из unmanaged DLL в .NET проходит успешно. Однако любая связь с «неуправляемым» кодом, как я понял, приводит к тому, что .NET-программа начинает требовать повышенного доверия: если установлены слишком жёсткие ограничения безопасности в настройках виртуальной машины, то попытка вызова некоторых функций программы может приводить к исключению (не фатальному).

Строгая типизация, позволяющая контролировать ошибки на стадии компиляции.
Если в VB.NET включить Strict type checking, то почти везде будет требоваться явное приведение типа (CType). А вообще, Бейсик всегда был типизированным языком — это вам не Java/PHP. Вдобавок, отсутствие указателей делало невозможными ошибки при манипуляции с памятью.

Возможность создания динамических типов данных.
В языке Visual Basic для этого сначала был тип Variant, теперь есть универсальный Object. Создавать можно что угодно: от массива массивов до коллекций любых объектов. Массивы строк переменной длины более не проблема; собственно, строки теперь только и могут быть переменной длины, а если нужно хранить массив байтов — на это есть тип Byte. Отличие String/Char от Byte ещё и в том, что строки теперь хранятся в Юникоде (опять-таки, непонимание этого может породить мифы о низкой производительности), и для поддержки преобразований в multibyte есть целый ряд функций.

Достаточная однозначность между языком и ассемблерным кодом (мы должны иметь возможность оптимизации).
Насколько я понимаю, .NET — это виртуальная машина, даже когда исходник на Си. Оптимизация псевдокода под конкретную аппаратную платформу производится перед запуском.

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

Возможность оптимизации и паралельности.
Так ли оно действительно нужно: вставлять ассемблерный код? Не скрою, я и сам так поступал в досовские времена, но сейчас-то зачем? Уже не требуется «воевать» с железом — достаточно писать логику приложения. Даже если вы занимаетесь разработкой фильтров для Photoshop, мне как-то сомнительно, что нынче можно реально выиграть от ассемблерных вставок.

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

Все библиотеи и объекты были написаны на боле других языках.
И что такого? Бейсик — это в первую очередь средство быстрой разработки, и свою задачу он отлично выполняет. Какая разница, из чего он сам сделан? Вот я взял топор, нарубил дров и развёл костёр — какое мне дело до того, из чего сделан топор? Лишь бы рубил. И главное, знать как им наиболее эффективно пользоваться.

Раньше, до появления Option Explicit, ходила такая шутка: пока программист на Си будет определять переменные, программист на Бейсике успеет написать текстовый редактор для написания программ на Си.
 
Статус
Закрыто для дальнейших ответов.