Как по вашему мнению, какой байсик (Пурик или Фрибэйсик) лучше осваивать углубленно? Я поверхностно попробовал оба, из достоинтств - оба отностительно простые, вроде даже понятные, оба должны подходить под создание игр. В Пурике есть готовый 3д двиг на базе Огра, Фрибарсик полностью бесплатен.
Если выбирать из этих друх, то лично я бы выбрал Pure. Тем более что в версии 5.00 добавили много функций в 3D движок.
Quote
- Added: Cocoa support on OS X (now the default toolkit) - Added: 64-bit version of PureBasic for OS X - Added: Brand new Form Designer, for Windows, Linux and OS X - Added: Carbon subsystem for PowerPC and x86 version of PureBasic (use 'carbon' as subsystem to enable it) - Added: Multi-dimensional arrays in structure support - Added: InitScintilla() on Linux and OS X avoid compilation issues (empty function) - Added: #PB_Window_NoActivate flag to OpenWindow() and HideWindow() - Added: #PB_EventType_RightClick support ScintillaGadget() - Added: Favorites section to the explorer tool (IDE) - Added: Trigger for custom tools when a new source file is created (IDE) - Added: SetWindowCallback() support to OS X to have callback events (only a few type supported: #PB_Event_SizeWindow, Splitter, ScrollBar) - Added: partial thread-safety to GTK (Linux) - Added: SpritePixelCollision() support for OS X and Linux
- Changed: SetModulePosition() is now in milliseconds, no more in pattern
- Updated: Scintilla updated to 3.1.0 - Updated: Expat updated to 2.1.0 - Updated: libjpeg updated to 8.0d - Updated: libpng updated to 1.5.12 - Updated: Ogre to 1.8.0, bullet to 2.80, hydrax to 0.5.4, CEGUI to 0.7.7 - Updated: ModPlug lib update to 0.8.8.4 - Updated: Use of VC++ 2010 instead of VC++ 2005 to compile the Windows libraries (32-bit and 64-bit), resulting of better optimized code
Engine3D: --------- Added: a new optional parameter to InitEngine3D() with constants #PB_Engine3D_DebugLog and #PB_Engine3D_DebugOutput Added: RayPick(x, y, z, x2, y2, z2 [, PickMask]) ; Returns the first #Entity crossed by the ray Added: 'PickMask' parameter to MousePick()
World: ------ Added: RenderWorld() now returns 'TimeSinceLastFrame', in milliseconds Added: SkyBox() and SkyDome() now supports Fog() Added: 'Color' and 'TextureSize' parameters to WorldShadows() Added: #PB_World_UnderWater and #PB_World_WaterGodRays flags to CreateWater()
Camera: ------ Added: CameraViewWidth(#Camera) ; return camera width in pixels Added: CameraViewHeight(#Camera) ; return camera height in pixels Added: CameraViewX(#Camera) ; return Y position in pixels Added: CameraViewY(#Camera) ; return X position in pixels Added: CameraDirection(#Camera, x, y, z) ; change the direction Added: CameraDirectionX/Y/Z(#Camera) - Retrieve the direction of the #Camera. Added: new 'IsActive' optional parameter to render to texture for CreateCamera() Added: SetCameraFixedYawAxis(#Camera, Mode [VectorX, VectorY, VectorZ]) - Change the way the yaw axis is managed Changed: CameraLookAt() ; doesn't change the direction anymore
Material: --------- Added: ScaleMaterial(#Material, x, y) Added: MaterialFog(#Material, Color, Intensity, StartDistance, EndDistance) - Display a fog effect on the material Added: ReloadMaterial(MaterialName$, Filename$, ParseScript) Added: ResetMaterial(ObjectType) Added: #PB_Material_Anisotropic support to MaterialFilteringMode() and #PB_Default support as Material to set the default settings for materials. Added: #PB_Material_Wireframe, #PB_Material_Point and #PB_Material_Solid to MaterialShadingMode()
Node: ----- Added: NodeFixedYawAxis()
Sound3D: -------- Added: SoundListenerLocate() ; to move the sound listener (the ear) in the world
Entity: ------- Added: new 'PickMask' optional paramater for CreateEntity() Added: #PB_Entity_Wireframe, #PB_Entity_Solid, #PB_Entity_Point and #PB_Entity_DisplaySkeleton to EntityRenderMode() Added: FreeEntityJoints(#Entity) - Free all joints associated with the #Entity. Added: AttachEntityObject(#Entity, Bone$, ObjectID [, x, y, z, Pitch, Roll, Yaw]) - Attach an object to the #Entity. Added: DetachEntityObject(#Entity, ObjectID) - Detach the object from the #Entity. Added: EntityBoneX/Y/Z(entityID, Bone$ [, OffsetX, OffsetY, OffsetZ]) Added: EntityBonePitch() Added: EntityBoneRoll() Added: EntityBoneYaw() Added: DirectionX/Y/Z optional parameters to EntityLookAt() Added: EntityVelocity(#Entity, x, y, z) - Change the linear velocity of the #Entity. Added: EntityAngularFactor(#Entity, x, y, z) - Change the angular factor of the #Entity. Added: EntityLinearFactor(#Entity, x, y, z) - Change the linear factor of the #Entity. Added: EntityCustomParameter(#Entity, SubEntityIndex, ParameterIndex, Value1, Value2, Value3, Value4) - Set a custom parameter to the #Entity shader script. Added: EntityParentNode(#Entity) Added: EntityBoundingBoxX/Y/Z(#Entity, Point, Flags) Added: DisableEntityBody(#Entity, Disable) Added: to Get/SetEntityAttributes: #PB_Entity_VelocityX: Get #PB_Entity_VelocityY: Get #PB_Entity_VelocityZ: Get #PB_Entity_MassCenterX: Get/Set #PB_Entity_MassCenterY: Get/Set #PB_Entity_MassCenterZ: Get/Set #PB_Entity_MaxVelocity: Get/Set
EntityAnimation: ---------------- Added: AddEntityAnimationTime(#Entity, Animation$, Time) - Add time to the specified #Entity animation. Added: EnableEntityAnimation(#Entity, Animation$, Enable [, Loop]) - Enable the specified #Entity animation. Added: EntityAnimationStatus(#Entity, Animation$) - Return the specified #Entity animation status (constants: #PB_EntityAnimation_Stopped, #PB_EntityAnimation_Started, #PB_EntityAnimation_Unknown) Added: EntityAnimationBlendMode(#Entity, Mode) - with #PB_Entity_Average and #PB_Entity_Cumulative Added: GetEntityAnimationTime(#Entity, Animation$) - Get the current #Entity animation time. Added: SetEntityAnimationTime(#Entity, Animation$, Time) - Set the current #Entity animation time. Added: GetEntityAnimationWeight(#Entity, Animation$) - Get the #Entity animation weight. Added: SetEntityAnimationWeight(#Entity, Animation$, Weight) - Set the #Entity animation weight (useful for EntityAnimationBlendMode()). Added: GetEntityAnimationLength(#Entity, Animation$) - Get the #Entity animation length. Added: SetEntityAnimationLength(#Entity, Animation$, Length) - Set the #Entity animation length. Added: UpdateEntityAnimation(#Entity, Animation$) - Update the animation, especially after vertex changes
NodeAnimation ------------- Added: FreeNodeAnimation(#NodeAnimation) - Free the specified #NodeAnimation. Added: CreateNodeAnimation(#NodeAnimation, Length, Interpolation, RotationInterpolation) - Create a new #NodeAnimation. 'Interpolation' can be: #PB_NodeAnimation_Linear or #PB_NodeAnimation_Spline 'RotationInterpolation' can be #PB_NodeAnimation_LinearRotation or #PB_NodeAnimation_SphericalRotation Added: CreateNodeAnimationTrack(#NodeAnimation, Index, NodeID) - Create a new track for the #NodeAnimation. Added: CreateNodeAnimationKeyFrame(#NodeAnimation, Track, Time, x, y, z) - Create a new keyframe for the #NodeAnimation track. Added: GetNodeAnimationKeyFrameTime(#NodeAnimation, Track, KeyFrame) - Get the keyframe time for the #NodeAnimation track. Added: SetNodeAnimationKeyFramePosition(#NodeAnimation, Track, KeyFrame, x, y, z) - Set the keyframe position for the #NodeAnimation track. Added: GetNodeAnimationKeyFrameX(#NodeAnimation, Track, KeyFrame) - Get the x keyframe position for the #NodeAnimation track. Added: GetNodeAnimationKeyFrameY(#NodeAnimation, Track, KeyFrame) - Get the y keyframe position for the #NodeAnimation track. Added: GetNodeAnimationKeyFrameZ(#NodeAnimation, Track, KeyFrame) - Get the z keyframe position for the #NodeAnimation track. Added: SetNodeAnimationKeyFrameRotation(#NodeAnimation, Track, KeyFrame, Pitch, Yaw, Roll) - Set the keyframe position for the #NodeAnimation track. Added: GetNodeAnimationKeyFramePitch(#NodeAnimation, Track, KeyFrame) - Get the keyframe pitch for the #NodeAnimation track. Added: GetNodeAnimationKeyFrameYaw(#NodeAnimation, Track, KeyFrame) - Get the y keyframe yaw for the #NodeAnimation track. Added: GetNodeAnimationKeyFrameRoll(#NodeAnimation, Track, KeyFrame) - Get the z keyframe roll for the #NodeAnimation track. Added: SetNodeAnimationKeyFrameScale(#NodeAnimation, Track, KeyFrame, ScaleX, ScaleY, ScaleZ) - Set the keyframe scale for the #NodeAnimation track. Added: AddNodeAnimationTime(#NodeAnimation, Time) - Add time to the specified #NodeAnimation. Added: EnableNodeAnimation(#NodeAnimation, Enable [, Loop]) - Enable the specified #NodeAnimation. Added: NodeAnimationStatus(#NodeAnimation) - Return the specified #NodeAnimation status. Added: GetNodeAnimationTime(#NodeAnimation) - Get the current #NodeAnimation time. Added: SetNodeAnimationTime(#NodeAnimation, Time) - Set the current #NodeAnimation time. Added: GetNodeAnimationWeight(#NodeAnimation) - Get the #NodeAnimation weight. Added: SetNodeAnimationWeight(#NodeAnimation, Weight) - Set the #NodeAnimation weight. Added: GetNodeAnimationLength(#NodeAnimation) - Get the #NodeAnimation length. Added: SetNodeAnimationLength(#NodeAnimation, Length) - Set the #NodeAnimation length.
Particule: ---------- Added: GetScriptParticle(#ParticleEmitter, Name$) - Get a particule emitter defined in scripts files.
Texture: -------- Added: CreateRenderTexture(#Texture, CameraID, Width, Height, RenderedTextureName$ [, Flags]) - Create a new rendered based #Texture. Flags can be: #PB_Texture_ManualUpdate or PB_Texture_AutomaticUpdate (default) Added: UpdateRenderTexture(#Texture) ; update the rendered texture, only in manual mode Added: SaveRenderTexture(#Texture, Filename$) Added: CreateCubeMapTexture(#Texture, CameraID, Width, Height, RenderedTextureName$ [, Flags]) - Create a new rendered based #Texture. Added: EntityCubeMapTexture(#Texture, #Entity) - Apply the cube map #Texture to the #Entity. Updated: CreateTexture() now handle alpha textures as well
Effect: ------- Updated: HideEffect(integer effectID, int hidden) ; now handle ribbon as well Added: EffectID(#Effect) Changed: CreateRibbonEffect() - 'InitialWidth' parameter has been removed Added: RibbonEffectWidth(#Effect, ChainIndex, Width, FadeoutWidth) Added: AttachRibbonEffect(#Effect, NodeID) - Attach the ribbon #Effect to the node. Added: DetachRibbonEffect(#Effect, NodeID) - Detach the node from the ribbon #Effect. Added: CreateLensFlareEffect(#Effect, CameraID, NodeID, BurstSize, HaloSize, HaloMaterialID, CircleMaterialID, BurstMaterialID) - Create a new lens flare #Effect. Added: LensFlareEffectColor(#Effect, ColorType, Color) - Change the color of the specified lens flare part.
Joint: ------ Added: EnableHingeJointAngularMotor(#Joint, Enable, TargetVelocity, MaxMotorImpulse) - Enable the angular motor on the hinge #Joint. Modified: Modification de la lib Joint pour supprimer la limitation d'un joint par entity: - Ajout d'un paramètre #Joint pour les fonctions suivantes : ConeTwistJoint(), HingeJoint(), PointJoint(), SliderJoint() - Remplacement du paramètre #Entity par le paramètre #Joint dans les fonctions suivantes : FreeJoint() Added: #PB_HingeJoint_LowerLimit and #PB_HingeJoint_UpperLimit to Get/SetJointAttribute()
VertexAnimation: ----------------- Added: CreateVertexAnimation(#Mesh, Animation$, Length) - Create a new vertex animation for the #mesh. Added: CreateVertexTrack(#Mesh, Animation$, Index) - Create a new track to the #Mesh animation. Added: CreateVertexPoseKeyFrame(#Mesh, Animation$, Track, Time) - Create a new keyframe to the #Mesh track. Added: AddVertexPoseReference(#Mesh, Animation$, Track, Index, PoseIndex, Influence) - Add a new vertex pose reference to the #Mesh track. Added: UpdateVertexPoseReference(#Mesh, Animation$, Track, Index, PoseIndex, Influence) - Update a new vertex pose reference to the #Mesh track. Added: VertexPoseReferencesSize(#Mesh, Animation$, Track, Index) - Return the vertex pose reference size of the specified #Mesh track. Added: MeshPoseName(#Mesh, PoseIndex) - Return the mesh pose name.
StaticGeometry: --------------- Added: Optional 'Pitch', 'Yaw', 'Roll' parameters to AddStaticGeometryEntity()
Spline: ------- CreateSpline(#Spline) - Create a new empty #Spline FreeSpline(#Spline) - Free the #Spline. AddSplinePoint(#Spline, x, y, z) ClearSpline(#Spline) - Clear the #Spine. CountSplinePoints(#Spline) - Return the number of point in the #Spine. SplinePointX(#Spline, Index) - Return the x position of the #Spline point. SplinePointY(#Spline, Index) - Return the y position of the #Spline point. SplinePointZ(#Spline, Index) - Return the z position of the #Spline point. UpdateSplinePoint(#Spline, Index, x, y, z) - Update the specified #Spline point. ComputeSpline(#Spline, Time) - Compute the #Spline at the given time. SplineX(#Spline) - Return the x position of the #Spline. SplineY(#Spline) - Return the y position of the #Spline. SplineZ(#Spline) - Return the z position of the #Spline.
Terrain: -------- FreeTerrain(#Terrain) - Free the #Terrain. SetupTerrains(LigthID, Distance, Flags) - Setup the default options for all terrains. CreateTerrain(#Terrain, Size, WorldSize, Scale, Layer, Filename$, Extension$) - Create a new #Terrain. TerrainPhysicBody(#Terrain, Restitution, Friction) - Add a static physic body to the #Terrain. DefineTerrainTile(#Terrain, TileX, TileY, Heightname$, FlipX, FlipY) - Defines a new #Terrain tile. AddTerrainTexture(#Terrain, Layer, WorldSize, DiffuseSpecular$, NormalHeight$) - Add a texture to the #Terrain. BuildTerrain(#Terrain) - Construct the #Terrain. TerrainLocate(#Terrain, x, y, z) - Change the #Terrain location. TerrainHeight(#Terrain, x, z) - Return the height of the #Terrain at the specified coordinates. TerrainTileHeightAtPosition(#Terrain, TileX, TileY, Layer, x, y) - Return the height of the #Terrain tile. TerrainTilePointX(#Terrain, TileX, TileY, x, y, z) - Return the x position in the #Terrain tile of the point. TerrainTilePointY(#Terrain, TileX, TileY, x, y, z) - Return the y position in the #Terrain tile of the point. TerrainTileSize(#Terrain, TileX, TileY) - Return the size of the #Terrain tile. GetTerrainTileHeightAtPoint(#Terrain, TileX, TileY, x, y) - Get the height of the #Terrain tile at the specified position. SetTerrainTileHeightAtPoint(#Terrain, TileX, TileY, x, y, Height) - Set the height of the #Terrain tile at the specified position. UpdateTerrain(#Terrain) - Update the whole #Terrain. TerrainTileLayerMapSize(#Terrain, TileX, TileY) - Return the #Terrain tile layer map size. GetTerrainTileLayerBlend(#Terrain, TileX, TileY, Layer, x, y) - Get the #Terrain tile layer blend value. SetTerrainTileLayerBlend(#Terrain, TileX, TileY, Layer, x, y, Value) - Set the #Terrain tile layer blend value. UpdateTerrainTileLayerBlend(#Terrain, TileX, TileY, Layer) - Update the #Terrain tile blend value. TerrainMousePick(#Terrain, CameraID, x, y) - Perform a mouse picking on the #Terrain. SaveTerrain(#Terrain, ModifiedOnly) - Save the #Terrain on disk. TerrainRenderMode(#Terrain, Flags) - Change the #Terrain render mode.
Window3D: --------- InputEvent3D(): Added a special key parameter to handle non printable keys
Obsolete: --------- Removed: AnimateEntity() (replaced with Start/StopEntityAnimation()) Removed: #PB_Entity_Wireframe, #PB_Entity_Point and #PB_Entity_Solid to EntityRenderMode() Removed: CheckEntityCollision(), NextWorldCollision(), FirstWorldCollisionEntity(), SecondWorldCollisionEntity()
Сообщение отредактировал PBPROG - Воскресенье, 23 Сентября 2012, 16:15
Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации. Дейкстра Э.
Сообщение отредактировал Monteg - Воскресенье, 23 Сентября 2012, 17:01
По поводу цитаты Дейкстры. Он сказал это об древних диалектах бейсика, наверное 40 лет назад! С того времени многое изменилось. Рекомендую тем, кто его цитирует, сначала заглянуть в вики. http://ru.wikipedia.org/wiki/Бейсик
Quote
Одной из «визитных карточек» Эдсгера Дейкстры стало высказывание: «Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации». Однако, это высказывание цитируется вне контекста, в котором Дейкстра подверг критике и многие другие популярные в то время языки....
....Если же говорить о современных диалектах и реализациях Бейсика, то они далеко ушли от первоначальной формы языка, являются более структурированными и сопоставимы по возможностям с такими языками, как Си, Паскаль и т. п.
Тем более что в версии 5.00 добавили много функций в 3D движок.
В движок они ничего не добавляли. Там OGRE используется. Они просто функционал переносят на синтаксис PB.
Первым моим ЯПом был Basic. После С++ и C# (в том числе и любых других ООП) я не могу себе представить хорошее функциональное программирование на бейсике т.к. он процедурный. На PureBasic'e хорошо писать мелкие утилиты. Это не значит, что вы не можете написать на нём что-то огромное. Просто будет не так удобно как с тем же С++. В том числе С++ очень плохо подходит для написания небольших и простых утилит/программ.
И ещё PB платный... Ты вышел в поле. Ты куришь гашиш. Ты видишь машину. Ты медведь. Ты горишь.
Тем более что в версии 5.00 добавили много функций в 3D движок.
В движок они ничего не добавляли. Там OGRE используется. Они просто функционал переносят на синтаксис PB.
да, Кэп
Quote (Aikidos)
Первым моим ЯПом был Basic. После С++ и C# (в том числе и любых других ООП) я не могу себе представить хорошее функциональное программирование на бейсике т.к. он процедурный.
думаю ты работал на Quick Basic. Сейчас же, практически все Бэйсики имеют ООП (PureBasic, VB, BlitzMax, PowerBasic и др.)
Я заметил что в основном новички выбирают C++ из-за "понтов", им такие же новички внушили что учить Бэйсик унизительно. Лично мне все равно я выбираю язык исходя из потребностей, а если под эти потребности подходят несколько языком - беру самый простой. Раньше я программировал на Blitz3D потом PureBasic далее на BlitzMax, а теперь на LUA. Все они в своем роде одинаково хороши. PS. Это лично мое мнение Blender 3D, Godot Engine, LUA
Для игрового программирования начального уровня есть ещё DarkBasic, который в некотором роде тоже бесплатный. Так же имеет место русская версия с русским же хэлпом и туториалом и огромной базой примеров и расширялок. Программируй - не хочу!
По поводу цитаты Дейкстры. Он сказал это об древних диалектах бейсика, наверное 40 лет назад!
Абсолютно согласен
Quote (Aikidos)
Первым моим ЯПом был Basic. После С++ и C# (в том числе и любых других ООП) я не могу себе представить хорошее функциональное программирование на бейсике т.к. он процедурный.
То же согласен, после хорошего, более плохое не пожелаешь
Quote (burlachenko)
Наверное правильно будет учить оба. А в процессе обучения вылезут ихние + и -, потом и решите.
Трезвая мысль, для тех кто решит сравнивать. Во всех остальных случаях заявлять что: то лучше или это - вранье!
Quote (TovTripleZ)
FreeBasic даёт больше средств для программирования (Cairo, GTK+, OpenGL, SDL), к тому же свободных.
PureBasic тоже не лишен возможности использовать эти либы
Quote (ant0N)
думаю ты работал на Quick Basic. Сейчас же, практически все Бэйсики имеют ООП (PureBasic, VB, BlitzMax, PowerBasic и др.)
Ничего не попутал? Где в PureBasic разглядел ООП? В FreeBasic есть!
Вообще ОПРОС принципиально не может отражать истину, просто потому , что продвигатель(и) PureBasic не жалеют времени и средств для пиара этого детища по всему инету (в особенности на ответах Mail.ru)....
Я подготовил таблицу, которая отражает мое мнение, как человека пробовавшего оба языка:
Я подготовил таблицу, которая отражает мое мнение, как человека пробовавшего оба языка:
Таблица сравнений ЗДЕСЬ
Я так почитал. огромной разницы нету, берешь любой и юзаешь))) Зачем люди еще ищут и спорят, да возьмите вы и попробуйте сами. больше пользы будет.
Добавлено (24.09.2012, 11:11) --------------------------------------------- А то если бы я так-же спрашивал про ac3 и питон или про макс и блендер, то так-же бы сидел тормозил, и нифига бы в итоге не выучил вообще. В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
Сообщение отредактировал Gavolot - Понедельник, 24 Сентября 2012, 11:12
Я подготовил таблицу, которая отражает мое мнение, как человека пробовавшего оба языка: Таблица сравнений ЗДЕСЬ
Да уж- ты бы хоть поднапрягся, написал без ошибок и смешивания всего подряд в кучу. например "PureBasic 0.45" нет такого есть PureBasic 4.5 в готовых решениях у тебя смешаны OpenGl, DirectX и mp3d, которую делает любитель. создание статических библиотек- есть нет, что ж так категорично нет, а как же пользователи Пурика их создают. Передача параметров в функции по ссылке , по значению : есть нет - это откуда взялось? В Пурике можно передавать в процедуру хоть , например, структурированный список, хоть ссылку на него. Связанные списки : нет есть Много примеров кода - это как? В Фрибайсике нет связанных списков, но есть много примеров кода?
Это, то, что увидел. Извиняй, но ты больше в заблуждение вводишь, чем помогаешь выбрать. Мой форум "Шахтеры космоса" SM strategy: Foundation (Ogre). Game video
AndyLy, спасибо за конструктивную критику, подправил кое-где. Если что жду еще какие непонятки
Quote
Передача параметров в функции по ссылке , по значению : есть нет - это откуда взялось? В Пурике можно передавать в процедуру хоть , например, структурированный список, хоть ссылку на него.
Ты не понял в случае с пуриком передается либо само значение, либо его адрес, но не ссылка. То есть в процедуре с пуриком все это дело выглядит так:
В результате работа в процедуре ведется со всеми вложенностями, а когда их немало это неудобно. Более того уменьшает универсальность процедуры
В случае с FreeBasic и передачей параметра по ссылке все проще, мы передаем ссылку на нашу вложенную структурированную переменную и работаем с ней как пожелаем в процедуре, изменяя если нужно.
Пример:
Code
Type one Ione As Integer = 10 End Type
Type two Itwo As one End Type
Dim obj As two
Sub PR(ByRef Ivar As Integer) ? Ivar Ivar+=100 End Sub
PR(obj.Itwo.Ione) ? obj.Itwo.Ione Sleep
Если я не прав , поправь
Сообщение отредактировал trew - Понедельник, 24 Сентября 2012, 15:34
Да не, это я не правильно понял. Был не прав - исправлюсь. Может показаться, что я придираюсь, но раз уж ты пишешь "руководство по применению"- нужно быть максимально конкретным и точным. Что бы не было, как в том пресловутом случае, когда: "в инструкции не было написано, что нельзя сушить кошку в микроволновке". Мой форум "Шахтеры космоса" SM strategy: Foundation (Ogre). Game video
Поправлю я. При сравнении стараются использовать идентичные коды, а здесь я вижу существенное различие. Вот как будет выглядеть второй код на FB, переведенный на PureBasic.
PBPROG, Я же написал, что в случае с PureBasic теряется универсальность процедуры\функции . Ты видно тоже сразу недопонимаешь. Взгляни внимательно на пример ниже. В нем практически тоже, но добавлен лишний вызов той же процедуры но с другим типом:
Code
Type one Ione As Integer = 10 End Type
Type two Itwo As one End Type
Dim obj As two Dim Ivariable As Integer = 55
Sub PR(ByRef Ivar As Integer) ? Ivar Ivar+=100 End Sub
Как ты это сможешь без танцев прикрутить к своей процедуре. Теперь надеюсь понятно о чем речь.
P.S. Поэтому я и написал что в FB возможна передача по ссылке и значению , а в PB только по значению (неважно что это за значение указатель или просто любое число)
думаю ты работал на Quick Basic. Сейчас же, практически все Бэйсики имеют ООП (PureBasic...)
Quote (ant0N)
может и попутал, просто читал на одном форуме что есть
А вообще сразу видно, что товарищ знает о чем говорит не понаслышке. Даже спорить не буду.
Quote (ant0N)
Я заметил что в основном новички выбирают C++ из-за "понтов", им такие же новички внушили что учить Бэйсик унизительно.
Не слышал такого. На С++ инструментов больше. Зачем себя изначально ограничивать в возможностях и использовать супер корявые врапперы того же Irrlicht'a для PureBasic'a и т.п.?
Но речь не об этом. Тут речь идёт о самом языке. По мне, так это спор, "что лучше? яблоко или апельсин?". Ты вышел в поле. Ты куришь гашиш. Ты видишь машину. Ты медведь. Ты горишь.
Я же написал, что в случае с PureBasic теряется универсальность процедуры\функции . Ты видно тоже сразу недопонимаешь. Взгляни внимательно на пример ниже.
Да все я понял с первого раза. Только или вы не так объясняете или не поняли мой пример выше. Смотрите этот пример. И где подтверждение ваших слов?
добавлен лишний вызов той же процедуры но с другим типом:
Вы что-то путаете. Как раз тип один и тот же - Integer.
Quote (trew)
Как ты это сможешь без танцев прикрутить к своей процедуре. Теперь надеюсь понятно о чем речь.
Не, непонятно потому что прикрутил без танцев с бубном.
Quote (trew)
P.S. Поэтому я и написал что в FB возможна передача по ссылке и значению , а в PB только по значению (неважно что это за значение указатель или просто любое число)
Если вы не знаете основ PureBasic то лучше промолчите. Выше привел примеры передачи переменной и связанного списка по ссылке.